public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Rename predicate class to ipa_predicate
@ 2021-11-03 10:23 Martin Liška
  2021-11-03 12:59 ` Jan Hubicka
  2021-11-03 16:29 ` Martin Sebor
  0 siblings, 2 replies; 4+ messages in thread
From: Martin Liška @ 2021-11-03 10:23 UTC (permalink / raw)
  To: gcc-patches; +Cc: Jan Hubicka, Martin Sebor

Hello.

The renaming patch fixes a -Wodr warning seen and reported in the PR.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

	PR bootstrap/102828

gcc/ChangeLog:

	* ipa-fnsummary.c (edge_predicate_pool): Rename predicate class to ipa_predicate.
	(ipa_fn_summary::account_size_time): Likewise.
	(edge_set_predicate): Likewise.
	(set_hint_predicate): Likewise.
	(add_freqcounting_predicate): Likewise.
	(evaluate_conditions_for_known_args): Likewise.
	(evaluate_properties_for_edge): Likewise.
	(remap_freqcounting_preds_after_dup): Likewise.
	(ipa_fn_summary_t::duplicate): Likewise.
	(set_cond_stmt_execution_predicate): Likewise.
	(set_switch_stmt_execution_predicate): Likewise.
	(compute_bb_predicates): Likewise.
	(will_be_nonconstant_expr_predicate): Likewise.
	(will_be_nonconstant_predicate): Likewise.
	(phi_result_unknown_predicate): Likewise.
	(predicate_for_phi_result): Likewise.
	(analyze_function_body): Likewise.
	(compute_fn_summary): Likewise.
	(summarize_calls_size_and_time): Likewise.
	(estimate_calls_size_and_time): Likewise.
	(ipa_call_context::estimate_size_and_time): Likewise.
	(remap_edge_summaries): Likewise.
	(remap_freqcounting_predicate): Likewise.
	(ipa_merge_fn_summary_after_inlining): Likewise.
	(ipa_update_overall_fn_summary): Likewise.
	(read_ipa_call_summary): Likewise.
	(inline_read_section): Likewise.
	* ipa-fnsummary.h (struct ipa_freqcounting_predicate): Likewise.
	* ipa-predicate.c (predicate::add_clause): Likewise.
	(ipa_predicate::add_clause): Likewise.
	(predicate::or_with): Likewise.
	(ipa_predicate::or_with): Likewise.
	(predicate::evaluate): Likewise.
	(ipa_predicate::evaluate): Likewise.
	(predicate::probability): Likewise.
	(ipa_predicate::probability): Likewise.
	(dump_condition): Likewise.
	(dump_clause): Likewise.
	(predicate::dump): Likewise.
	(ipa_predicate::dump): Likewise.
	(predicate::debug): Likewise.
	(ipa_predicate::debug): Likewise.
	(predicate::remap_after_duplication): Likewise.
	(ipa_predicate::remap_after_duplication): Likewise.
	(predicate::remap_after_inlining): Likewise.
	(ipa_predicate::remap_after_inlining): Likewise.
	(predicate::stream_in): Likewise.
	(ipa_predicate::stream_in): Likewise.
	(predicate::stream_out): Likewise.
	(ipa_predicate::stream_out): Likewise.
	(add_condition): Likewise.
	* ipa-predicate.h (class predicate): Likewise.
	(class ipa_predicate): Likewise.
	(add_condition): Likewise.
---
  gcc/ipa-fnsummary.c | 234 ++++++++++++++++++++++----------------------
  gcc/ipa-fnsummary.h |  11 ++-
  gcc/ipa-predicate.c | 101 ++++++++++---------
  gcc/ipa-predicate.h |  65 ++++++------
  4 files changed, 208 insertions(+), 203 deletions(-)

diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
index ac6eec30af8..2cfa9a6d0e9 100644
--- a/gcc/ipa-fnsummary.c
+++ b/gcc/ipa-fnsummary.c
@@ -94,7 +94,7 @@ fast_function_summary <ipa_size_summary *, va_heap> *ipa_size_summaries;
  fast_call_summary <ipa_call_summary *, va_heap> *ipa_call_summaries;
  
  /* Edge predicates goes here.  */
-static object_allocator<predicate> edge_predicate_pool ("edge predicates");
+static object_allocator<ipa_predicate> edge_predicate_pool ("edge predicates");
  
  
  /* Dump IPA hints.  */
@@ -162,14 +162,14 @@ ipa_dump_hints (FILE *f, ipa_hints hints)
  
  void
  ipa_fn_summary::account_size_time (int size, sreal time,
-				   const predicate &exec_pred,
-				   const predicate &nonconst_pred_in,
+				   const ipa_predicate &exec_pred,
+				   const ipa_predicate &nonconst_pred_in,
  				   bool call)
  {
    size_time_entry *e;
    bool found = false;
    int i;
-  predicate nonconst_pred;
+  ipa_predicate nonconst_pred;
    vec<size_time_entry> *table = call ? &call_size_time_table : &size_time_table;
  
    if (exec_pred == false)
@@ -271,7 +271,7 @@ redirect_to_unreachable (struct cgraph_edge *e)
  /* Set predicate for edge E.  */
  
  static void
-edge_set_predicate (struct cgraph_edge *e, predicate *predicate)
+edge_set_predicate (struct cgraph_edge *e, ipa_predicate *predicate)
  {
    /* If the edge is determined to be never executed, redirect it
       to BUILTIN_UNREACHABLE to make it clear to IPA passes the call will
@@ -301,7 +301,7 @@ edge_set_predicate (struct cgraph_edge *e, predicate *predicate)
  /* Set predicate for hint *P.  */
  
  static void
-set_hint_predicate (predicate **p, predicate new_predicate)
+set_hint_predicate (ipa_predicate **p, ipa_predicate new_predicate)
  {
    if (new_predicate == false || new_predicate == true)
      {
@@ -324,7 +324,7 @@ set_hint_predicate (predicate **p, predicate new_predicate)
  
  static void
  add_freqcounting_predicate (vec<ipa_freqcounting_predicate, va_gc> **v,
-			    const predicate &new_predicate, sreal add_freq,
+			    const ipa_predicate &new_predicate, sreal add_freq,
  			    unsigned max_num_predicates)
  {
    if (new_predicate == false || new_predicate == true)
@@ -372,8 +372,8 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
  				    clause_t *ret_clause,
  				    clause_t *ret_nonspec_clause)
  {
-  clause_t clause = inline_p ? 0 : 1 << predicate::not_inlined_condition;
-  clause_t nonspec_clause = 1 << predicate::not_inlined_condition;
+  clause_t clause = inline_p ? 0 : 1 << ipa_predicate::not_inlined_condition;
+  clause_t nonspec_clause = 1 << ipa_predicate::not_inlined_condition;
    class ipa_fn_summary *info = ipa_fn_summaries->get (node);
    int i;
    struct condition *c;
@@ -396,7 +396,7 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
  
        if (c->agg_contents)
  	{
-	  if (c->code == predicate::changed
+	  if (c->code == ipa_predicate::changed
  	      && !c->by_ref
  	      && (avals->safe_sval_at(c->operand_num) == error_mark_node))
  	    continue;
@@ -413,27 +413,28 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
        else
  	{
  	  val = avals->safe_sval_at (c->operand_num);
-	  if (val && val == error_mark_node && c->code != predicate::changed)
+	  if (val && val == error_mark_node
+	      && c->code != ipa_predicate::changed)
  	    val = NULL_TREE;
  	}
  
        if (!val
-	  && (c->code == predicate::changed
-	      || c->code == predicate::is_not_constant))
+	  && (c->code == ipa_predicate::changed
+	      || c->code == ipa_predicate::is_not_constant))
  	{
-	  clause |= 1 << (i + predicate::first_dynamic_condition);
-	  nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
+	  clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
+	  nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
  	  continue;
  	}
-      if (c->code == predicate::changed)
+      if (c->code == ipa_predicate::changed)
  	{
-	  nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
+	  nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
  	  continue;
  	}
  
-      if (c->code == predicate::is_not_constant)
+      if (c->code == ipa_predicate::is_not_constant)
  	{
-	  nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
+	  nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
  	  continue;
  	}
  
@@ -472,8 +473,9 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
  	    continue;
  	  if (res && integer_onep (res))
  	    {
-	      clause |= 1 << (i + predicate::first_dynamic_condition);
-	      nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
+	      clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
+	      nonspec_clause
+		|= 1 << (i + ipa_predicate::first_dynamic_condition);
  	      continue;
  	    }
  	}
@@ -528,8 +530,8 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
  	    }
  	}
  
-      clause |= 1 << (i + predicate::first_dynamic_condition);
-      nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
+      clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
+      nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
      }
    *ret_clause = clause;
    if (ret_nonspec_clause)
@@ -587,7 +589,7 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
    class ipa_edge_args *args;
  
    if (clause_ptr)
-    *clause_ptr = inline_p ? 0 : 1 << predicate::not_inlined_condition;
+    *clause_ptr = inline_p ? 0 : 1 << ipa_predicate::not_inlined_condition;
  
    if (ipa_node_params_sum
        && !e->call_stmt_cannot_inline_p
@@ -785,7 +787,7 @@ remap_freqcounting_preds_after_dup (vec<ipa_freqcounting_predicate, va_gc> *v,
    int len = res->length();
    for (int i = len - 1; i >= 0; i--)
      {
-      predicate new_predicate
+      ipa_predicate new_predicate
  	= (*res)[i].predicate->remap_after_duplication (possible_truths);
        /* We do not want to free previous predicate; it is used by node
  	 origin.  */
@@ -823,7 +825,7 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
        int count = ipa_get_param_count (parms_info);
        int i, j;
        clause_t possible_truths;
-      predicate true_pred = true;
+      ipa_predicate true_pred = true;
        size_time_entry *e;
        int optimized_out_size = 0;
        bool inlined_to_p = false;
@@ -860,8 +862,8 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
           to be true.  */
        for (i = 0; src_info->size_time_table.iterate (i, &e); i++)
  	{
-	  predicate new_exec_pred;
-	  predicate new_nonconst_pred;
+	  ipa_predicate new_exec_pred;
+	  ipa_predicate new_nonconst_pred;
  	  new_exec_pred = e->exec_predicate.remap_after_duplication
  				 (possible_truths);
  	  new_nonconst_pred = e->nonconst_predicate.remap_after_duplication
@@ -877,7 +879,7 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
           Also copy constantness arrays.   */
        for (edge = dst->callees; edge; edge = next)
  	{
-	  predicate new_predicate;
+	  ipa_predicate new_predicate;
  	  class ipa_call_summary *es = ipa_call_summaries->get (edge);
  	  next = edge->next_callee;
  
@@ -896,7 +898,7 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
           Also copy constantness arrays.   */
        for (edge = dst->indirect_calls; edge; edge = next)
  	{
-	  predicate new_predicate;
+	  ipa_predicate new_predicate;
  	  class ipa_call_summary *es = ipa_call_summaries->get (edge);
  	  next = edge->next_callee;
  
@@ -944,13 +946,13 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
        ipa_freqcounting_predicate *f;
        for (int i = 0; vec_safe_iterate (info->loop_iterations, i, &f); i++)
  	{
-	  predicate p = *f->predicate;
+	  ipa_predicate p = *f->predicate;
  	  f->predicate = NULL;
  	  set_hint_predicate (&f->predicate, p);
  	}
        for (int i = 0; vec_safe_iterate (info->loop_strides, i, &f); i++)
  	{
-	  predicate p = *f->predicate;
+	  ipa_predicate p = *f->predicate;
  	  f->predicate = NULL;
  	  set_hint_predicate (&f->predicate, p);
  	}
@@ -1609,12 +1611,12 @@ set_cond_stmt_execution_predicate (struct ipa_func_body_info *fbi,
  	  if (this_code != ERROR_MARK
  	      && !dominated_by_p (CDI_POST_DOMINATORS, bb, e->dest))
  	    {
-	      predicate p
+	      ipa_predicate p
  		= add_condition (summary, params_summary, index,
  			       	 param_type, &aggpos,
  				 this_code, gimple_cond_rhs (last), param_ops);
  	      e->aux = edge_predicate_pool.allocate ();
-	      *(predicate *) e->aux = p;
+	      *(ipa_predicate *) e->aux = p;
  	    }
  	}
        vec_free (param_ops);
@@ -1646,11 +1648,11 @@ set_cond_stmt_execution_predicate (struct ipa_func_body_info *fbi,
      add_builtin_constant_p_parm (summary, index);
    FOR_EACH_EDGE (e, ei, bb->succs) if (e->flags & EDGE_FALSE_VALUE)
      {
-      predicate p = add_condition (summary, params_summary, index,
+      ipa_predicate p = add_condition (summary, params_summary, index,
  		     		   param_type, &aggpos,
-				   predicate::is_not_constant, NULL_TREE);
+				   ipa_predicate::is_not_constant, NULL_TREE);
        e->aux = edge_predicate_pool.allocate ();
-      *(predicate *) e->aux = p;
+      *(ipa_predicate *) e->aux = p;
      }
  }
  
@@ -1701,7 +1703,7 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
    FOR_EACH_EDGE (e, ei, bb->succs)
      {
        e->aux = edge_predicate_pool.allocate ();
-      *(predicate *) e->aux = false;
+      *(ipa_predicate *) e->aux = false;
      }
  
    e = gimple_switch_edge (cfun, last, 0);
@@ -1718,7 +1720,7 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
        tree cl = gimple_switch_label (last, case_idx);
        tree min = CASE_LOW (cl);
        tree max = CASE_HIGH (cl);
-      predicate p;
+      ipa_predicate p;
  
        e = gimple_switch_edge (cfun, last, case_idx);
  
@@ -1742,15 +1744,15 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
  		           &aggpos, EQ_EXPR, min, param_ops);
        else
  	{
-	  predicate p1, p2;
+	  ipa_predicate p1, p2;
  	  p1 = add_condition (summary, params_summary, index, param_type,
  			      &aggpos, GE_EXPR, min, param_ops);
  	  p2 = add_condition (summary,  params_summary,index, param_type,
  			      &aggpos, LE_EXPR, max, param_ops);
  	  p = p1 & p2;
  	}
-      *(class predicate *) e->aux
-	= p.or_with (summary->conds, *(class predicate *) e->aux);
+      *(ipa_predicate *) e->aux
+	= p.or_with (summary->conds, *(ipa_predicate *) e->aux);
  
        /* If there are too many disjoint case ranges, predicate for default
  	 case might become too complicated.  So add a limit here.  */
@@ -1796,13 +1798,13 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
    e = gimple_switch_edge (cfun, last, 0);
    if (bound_count > bound_limit)
      {
-      *(class predicate *) e->aux = true;
+      *(ipa_predicate *) e->aux = true;
        vec_free (param_ops);
        return;
      }
  
-  predicate p_seg = true;
-  predicate p_all = false;
+  ipa_predicate p_seg = true;
+  ipa_predicate p_all = false;
  
    if (vr_type != VR_RANGE)
      {
@@ -1857,8 +1859,8 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
      }
  
    p_all = p_all.or_with (summary->conds, p_seg);
-  *(class predicate *) e->aux
-    = p_all.or_with (summary->conds, *(class predicate *) e->aux);
+  *(ipa_predicate *) e->aux
+    = p_all.or_with (summary->conds, *(ipa_predicate *) e->aux);
  
    vec_free (param_ops);
  }
@@ -1886,7 +1888,7 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
    /* Entry block is always executable.  */
    ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux
      = edge_predicate_pool.allocate ();
-  *(predicate *) ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux = true;
+  *(ipa_predicate *) ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux = true;
  
    /* A simple dataflow propagation of predicates forward in the CFG.
       TODO: work in reverse postorder.  */
@@ -1895,17 +1897,17 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
        done = true;
        FOR_EACH_BB_FN (bb, my_function)
  	{
-	  predicate p = false;
+	  ipa_predicate p = false;
  	  edge e;
  	  edge_iterator ei;
  	  FOR_EACH_EDGE (e, ei, bb->preds)
  	    {
  	      if (e->src->aux)
  		{
-		  predicate this_bb_predicate
-		    = *(predicate *) e->src->aux;
+		  ipa_predicate this_bb_predicate
+		    = *(ipa_predicate *) e->src->aux;
  		  if (e->aux)
-		    this_bb_predicate &= (*(class predicate *) e->aux);
+		    this_bb_predicate &= (*(ipa_predicate *) e->aux);
  		  p = p.or_with (summary->conds, this_bb_predicate);
  		  if (p == true)
  		    break;
@@ -1919,18 +1921,18 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
  		{
  		  done = false;
  		  bb->aux = edge_predicate_pool.allocate ();
-		  *((predicate *) bb->aux) = p;
+		  *((ipa_predicate *) bb->aux) = p;
  		}
-	      else if (p != *(predicate *) bb->aux)
+	      else if (p != *(ipa_predicate *) bb->aux)
  		{
  		  /* This OR operation is needed to ensure monotonous data flow
  		     in the case we hit the limit on number of clauses and the
  		     and/or operations above give approximate answers.  */
-		  p = p.or_with (summary->conds, *(predicate *)bb->aux);
-	          if (p != *(predicate *) bb->aux)
+		  p = p.or_with (summary->conds, *(ipa_predicate *)bb->aux);
+		  if (p != *(ipa_predicate *)bb->aux)
  		    {
  		      done = false;
-		      *((predicate *) bb->aux) = p;
+		      *((ipa_predicate *)bb->aux) = p;
  		    }
  		}
  
@@ -1950,15 +1952,16 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
  		{
  		  done = false;
  		  pdom_bb->aux = edge_predicate_pool.allocate ();
-		  *((predicate *) pdom_bb->aux) = p;
+		  *((ipa_predicate *)pdom_bb->aux) = p;
  		}
-	      else if (p != *(predicate *) pdom_bb->aux)
+	      else if (p != *(ipa_predicate *)pdom_bb->aux)
  		{
-		  p = p.or_with (summary->conds, *(predicate *)pdom_bb->aux);
-		  if (p != *(predicate *) pdom_bb->aux)
+		  p = p.or_with (summary->conds,
+				 *(ipa_predicate *)pdom_bb->aux);
+		  if (p != *(ipa_predicate *)pdom_bb->aux)
  		    {
  		      done = false;
-		      *((predicate *) pdom_bb->aux) = p;
+		      *((ipa_predicate *)pdom_bb->aux) = p;
  		    }
  		}
  	    }
@@ -1970,12 +1973,12 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
  /* Return predicate specifying when the STMT might have result that is not
     a compile time constant.  */
  
-static predicate
+static ipa_predicate
  will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
  				    class ipa_fn_summary *summary,
  				    class ipa_node_params *params_summary,
  				    tree expr,
-				    vec<predicate> nonconstant_names)
+				    vec<ipa_predicate> nonconstant_names)
  {
    tree parm;
    int index;
@@ -1986,14 +1989,14 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
    parm = unmodified_parm (fbi, NULL, expr, NULL);
    if (parm && (index = ipa_get_param_decl_index (fbi->info, parm)) >= 0)
      return add_condition (summary, params_summary, index, TREE_TYPE (parm), NULL,
-			  predicate::changed, NULL_TREE);
+			  ipa_predicate::changed, NULL_TREE);
    if (is_gimple_min_invariant (expr))
      return false;
    if (TREE_CODE (expr) == SSA_NAME)
      return nonconstant_names[SSA_NAME_VERSION (expr)];
    if (BINARY_CLASS_P (expr) || COMPARISON_CLASS_P (expr))
      {
-      predicate p1
+      ipa_predicate p1
  	= will_be_nonconstant_expr_predicate (fbi, summary,
  					      params_summary,
  					      TREE_OPERAND (expr, 0),
@@ -2001,7 +2004,7 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
        if (p1 == true)
  	return p1;
  
-      predicate p2
+      ipa_predicate p2
  	= will_be_nonconstant_expr_predicate (fbi, summary,
  					      params_summary,
  					      TREE_OPERAND (expr, 1),
@@ -2010,7 +2013,7 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
      }
    else if (TREE_CODE (expr) == COND_EXPR)
      {
-      predicate p1
+      ipa_predicate p1
  	= will_be_nonconstant_expr_predicate (fbi, summary,
  					      params_summary,
  					      TREE_OPERAND (expr, 0),
@@ -2018,7 +2021,7 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
        if (p1 == true)
  	return p1;
  
-      predicate p2
+      ipa_predicate p2
  	= will_be_nonconstant_expr_predicate (fbi, summary,
  					      params_summary,
  					      TREE_OPERAND (expr, 1),
@@ -2046,18 +2049,18 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
  /* Return predicate specifying when the STMT might have result that is not
     a compile time constant.  */
  
-static predicate
+static ipa_predicate
  will_be_nonconstant_predicate (struct ipa_func_body_info *fbi,
  			       class ipa_fn_summary *summary,
  			       class ipa_node_params *params_summary,
  			       gimple *stmt,
-			       vec<predicate> nonconstant_names)
+			       vec<ipa_predicate> nonconstant_names)
  {
-  predicate p = true;
+  ipa_predicate p = true;
    ssa_op_iter iter;
    tree use;
    tree param_type = NULL_TREE;
-  predicate op_non_const;
+  ipa_predicate op_non_const;
    bool is_load;
    int base_index;
    struct agg_position_info aggpos;
@@ -2109,7 +2112,7 @@ will_be_nonconstant_predicate (struct ipa_func_body_info *fbi,
      op_non_const =
        add_condition (summary, params_summary,
  		     base_index, param_type, &aggpos,
-		     predicate::changed, NULL_TREE);
+		     ipa_predicate::changed, NULL_TREE);
    else
      op_non_const = false;
    FOR_EACH_SSA_TREE_OPERAND (use, stmt, iter, SSA_OP_USE)
@@ -2122,7 +2125,7 @@ will_be_nonconstant_predicate (struct ipa_func_body_info *fbi,
  	  if (index != base_index)
  	    p = add_condition (summary, params_summary, index,
  			       TREE_TYPE (parm), NULL,
-			       predicate::changed, NULL_TREE);
+			       ipa_predicate::changed, NULL_TREE);
  	  else
  	    continue;
  	}
@@ -2315,8 +2318,8 @@ phi_result_unknown_predicate (ipa_func_body_info *fbi,
  			      ipa_fn_summary *summary,
  			      class ipa_node_params *params_summary,
  			      basic_block bb,
-			      predicate *p,
-			      vec<predicate> nonconstant_names)
+			      ipa_predicate *p,
+			      vec<ipa_predicate> nonconstant_names)
  {
    edge e;
    edge_iterator ei;
@@ -2374,8 +2377,8 @@ phi_result_unknown_predicate (ipa_func_body_info *fbi,
  
  static void
  predicate_for_phi_result (class ipa_fn_summary *summary, gphi *phi,
-			  predicate *p,
-			  vec<predicate> nonconstant_names)
+			  ipa_predicate *p,
+			  vec<ipa_predicate> nonconstant_names)
  {
    unsigned i;
  
@@ -2607,9 +2610,9 @@ analyze_function_body (struct cgraph_node *node, bool early)
    class ipa_fn_summary *info = ipa_fn_summaries->get_create (node);
    ipa_node_params *params_summary
      = early ? NULL : ipa_node_params_sum->get (node);
-  predicate bb_predicate;
+  ipa_predicate bb_predicate;
    struct ipa_func_body_info fbi;
-  vec<predicate> nonconstant_names = vNULL;
+  vec<ipa_predicate> nonconstant_names = vNULL;
    int nblocks, n;
    int *order;
    gimple *fix_builtin_expect_stmt;
@@ -2664,7 +2667,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
    bb_predicate = true;
    info->account_size_time (0, 0, bb_predicate, bb_predicate);
  
-  bb_predicate = predicate::not_inlined ();
+  bb_predicate = ipa_predicate::not_inlined ();
    info->account_size_time (opt_for_fn (node->decl,
  				param_uninlined_function_insns)
  			   * ipa_fn_summary::size_scale,
@@ -2695,7 +2698,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
        if (fbi.info)
  	{
  	  if (bb->aux)
-	    bb_predicate = *(predicate *) bb->aux;
+	    bb_predicate = *(ipa_predicate *)bb->aux;
  	  else
  	    bb_predicate = false;
  	}
@@ -2710,7 +2713,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
  
        if (fbi.info && nonconstant_names.exists ())
  	{
-	  predicate phi_predicate;
+	  ipa_predicate phi_predicate;
  	  bool first_phi = true;
  
  	  for (gphi_iterator bsi = gsi_start_phis (bb); !gsi_end_p (bsi);
@@ -2743,7 +2746,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
  	  int this_size = estimate_num_insns (stmt, &eni_size_weights);
  	  int this_time = estimate_num_insns (stmt, &eni_time_weights);
  	  int prob;
-	  predicate will_be_nonconstant;
+	  ipa_predicate will_be_nonconstant;
  
            /* This relation stmt should be folded after we remove
               __builtin_expect call. Adjust the cost here.  */
@@ -2776,7 +2779,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
  		  && gimple_call_lhs (stmt)
  		  && TREE_CODE (gimple_call_lhs (stmt)) == SSA_NAME)
  		{
-		  predicate false_p = false;
+		  ipa_predicate false_p = false;
  		  nonconstant_names[SSA_NAME_VERSION (gimple_call_lhs (stmt))]
  		    = false_p;
  		}
@@ -2853,7 +2856,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
  	      if (prob == 2 && dump_file && (dump_flags & TDF_DETAILS))
  		fprintf (dump_file, "\t\tWill be eliminated by inlining\n");
  
-	      class predicate p = bb_predicate & will_be_nonconstant;
+	      ipa_predicate p = bb_predicate & will_be_nonconstant;
  
  	      /* We can ignore statement when we proved it is never going
  		 to happen, but we cannot do that for call statements
@@ -2872,7 +2875,8 @@ analyze_function_body (struct cgraph_node *node, bool early)
  		{
  		  if (prob)
  		    {
-		      predicate ip = bb_predicate & predicate::not_inlined ();
+		      ipa_predicate ip
+			= bb_predicate & ipa_predicate::not_inlined ();
  		      info->account_size_time (this_size * prob,
  					       (final_time * prob) / 2, ip,
  					       p);
@@ -2902,7 +2906,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
  		     || TREE_CODE (op) == ARRAY_RANGE_REF)
  		    && TREE_CODE (TREE_OPERAND (op, 1)) == SSA_NAME)
  		  {
-		    predicate p = bb_predicate;
+		    ipa_predicate p = bb_predicate;
  		    if (fbi.info)
  		      p = p & will_be_nonconstant_expr_predicate
  				 (&fbi, info, params_summary,
@@ -2939,7 +2943,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
        scev_initialize ();
        for (auto loop : loops_list (cfun, 0))
  	{
-	  predicate loop_iterations = true;
+	  ipa_predicate loop_iterations = true;
  	  sreal header_freq;
  	  edge ex;
  	  unsigned int j;
@@ -2950,13 +2954,13 @@ analyze_function_body (struct cgraph_node *node, bool early)
  	  profile_count phdr_count = loop_preheader_edge (loop)->count ();
  	  sreal phdr_freq = phdr_count.to_sreal_scale (entry_count);
  
-	  bb_predicate = *(predicate *) loop->header->aux;
+	  bb_predicate = *(ipa_predicate *)loop->header->aux;
  	  auto_vec<edge> exits = get_loop_exit_edges (loop);
  	  FOR_EACH_VEC_ELT (exits, j, ex)
  	    if (number_of_iterations_exit (loop, ex, &niter_desc, false)
  		&& !is_gimple_min_invariant (niter_desc.niter))
  	    {
-	      predicate will_be_nonconstant
+	      ipa_predicate will_be_nonconstant
  		= will_be_nonconstant_expr_predicate (&fbi, info,
  						      params_summary,
  						      niter_desc.niter,
@@ -2977,7 +2981,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
        for (loop = loops_for_fn (cfun)->tree_root->inner;
  	   loop != NULL; loop = loop->next)
  	{
-	  predicate loop_stride = true;
+	  ipa_predicate loop_stride = true;
  	  basic_block *body = get_loop_body (loop);
  	  profile_count phdr_count = loop_preheader_edge (loop)->count ();
  	  sreal phdr_freq = phdr_count.to_sreal_scale (entry_count);
@@ -2987,7 +2991,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
  	      if (!body[i]->aux)
  		continue;
  
-	      bb_predicate = *(predicate *) body[i]->aux;
+	      bb_predicate = *(ipa_predicate *)body[i]->aux;
  	      for (gsi = gsi_start_bb (body[i]); !gsi_end_p (gsi);
  		   gsi_next (&gsi))
  		{
@@ -3007,7 +3011,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
  		      || is_gimple_min_invariant (iv.step))
  		    continue;
  
-		  predicate will_be_nonconstant
+		  ipa_predicate will_be_nonconstant
  		    = will_be_nonconstant_expr_predicate (&fbi, info,
  				    			  params_summary,
  				   			  iv.step,
@@ -3031,12 +3035,12 @@ analyze_function_body (struct cgraph_node *node, bool early)
        edge_iterator ei;
  
        if (bb->aux)
-	edge_predicate_pool.remove ((predicate *)bb->aux);
+	edge_predicate_pool.remove ((ipa_predicate *)bb->aux);
        bb->aux = NULL;
        FOR_EACH_EDGE (e, ei, bb->succs)
  	{
  	  if (e->aux)
-	    edge_predicate_pool.remove ((predicate *) e->aux);
+	    edge_predicate_pool.remove ((ipa_predicate *)e->aux);
  	  e->aux = NULL;
  	}
      }
@@ -3092,7 +3096,7 @@ compute_fn_summary (struct cgraph_node *node, bool early)
    if (node->thunk)
      {
        ipa_call_summary *es = ipa_call_summaries->get_create (node->callees);
-      predicate t = true;
+      ipa_predicate t = true;
  
        node->can_change_signature = false;
        es->call_stmt_size = eni_size_weights.call_cost;
@@ -3102,7 +3106,7 @@ compute_fn_summary (struct cgraph_node *node, bool early)
  				 param_uninlined_function_thunk_insns),
  			       opt_for_fn (node->decl,
  				 param_uninlined_function_thunk_time), t, t);
-      t = predicate::not_inlined ();
+      t = ipa_predicate::not_inlined ();
        info->account_size_time (2 * ipa_fn_summary::size_scale, 0, t, t);
        ipa_update_overall_fn_summary (node);
        size_info->self_size = size_info->size;
@@ -3335,7 +3339,7 @@ summarize_calls_size_and_time (struct cgraph_node *node,
  
        estimate_edge_size_and_time (e, &size, NULL, &time, NULL, NULL);
  
-      struct predicate pred = true;
+      ipa_predicate pred = true;
        class ipa_call_summary *es = ipa_call_summaries->get (e);
  
        if (es->predicate)
@@ -3348,7 +3352,7 @@ summarize_calls_size_and_time (struct cgraph_node *node,
        sreal time = 0;
  
        estimate_edge_size_and_time (e, &size, NULL, &time, NULL, NULL);
-      struct predicate pred = true;
+      ipa_predicate pred = true;
        class ipa_call_summary *es = ipa_call_summaries->get (e);
  
        if (es->predicate)
@@ -3414,7 +3418,7 @@ estimate_calls_size_and_time (struct cgraph_node *node, int *size,
        /* Build summary if it is absent.  */
        if (!sum->call_size_time_table.length ())
  	{
-	  predicate true_pred = true;
+	  ipa_predicate true_pred = true;
  	  sum->account_size_time (0, 0, true_pred, true_pred, true);
  	  summarize_calls_size_and_time (node, sum);
  	}
@@ -3712,8 +3716,8 @@ ipa_call_context::estimate_size_and_time (ipa_call_estimates *estimates,
        fprintf (dump_file, "   Estimating body: %s\n"
  	       "   Known to be false: ", m_node->dump_name ());
  
-      for (i = predicate::not_inlined_condition;
-	   i < (predicate::first_dynamic_condition
+      for (i = ipa_predicate::not_inlined_condition;
+	   i < (ipa_predicate::first_dynamic_condition
  		+ (int) vec_safe_length (info->conds)); i++)
  	if (!(m_possible_truths & (1 << i)))
  	  {
@@ -3984,12 +3988,12 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
  		      const vec<int> &operand_map,
  		      const vec<HOST_WIDE_INT> &offset_map,
  		      clause_t possible_truths,
-		      predicate *toplev_predicate)
+		      ipa_predicate *toplev_predicate)
  {
    struct cgraph_edge *e, *next;
    for (e = node->callees; e; e = next)
      {
-      predicate p;
+      ipa_predicate p;
        next = e->next_callee;
  
        if (e->inline_failed)
@@ -4018,7 +4022,7 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
    for (e = node->indirect_calls; e; e = next)
      {
        class ipa_call_summary *es = ipa_call_summaries->get (e);
-      predicate p;
+      ipa_predicate p;
        next = e->next_callee;
  
        remap_edge_params (inlined_edge, e);
@@ -4045,13 +4049,13 @@ remap_freqcounting_predicate (class ipa_fn_summary *info,
  			      const vec<int> &operand_map,
  			      const vec<HOST_WIDE_INT> &offset_map,
  			      clause_t possible_truths,
-			      predicate *toplev_predicate)
+			      ipa_predicate *toplev_predicate)
  
  {
    ipa_freqcounting_predicate *fcp;
    for (int i = 0; vec_safe_iterate (v, i, &fcp); i++)
      {
-      predicate p
+      ipa_predicate p
  	= fcp->predicate->remap_after_inlining (info, params_summary,
  						callee_info, operand_map,
  						offset_map, possible_truths,
@@ -4075,7 +4079,7 @@ ipa_merge_fn_summary_after_inlining (struct cgraph_edge *edge)
    auto_vec<int, 8> operand_map;
    auto_vec<HOST_WIDE_INT, 8> offset_map;
    int i;
-  predicate toplev_predicate;
+  ipa_predicate toplev_predicate;
    class ipa_call_summary *es = ipa_call_summaries->get (edge);
    ipa_node_params *params_summary = (ipa_node_params_sum
  				     ? ipa_node_params_sum->get (to) : NULL);
@@ -4139,13 +4143,13 @@ ipa_merge_fn_summary_after_inlining (struct cgraph_edge *edge)
    sreal freq = edge->sreal_frequency ();
    for (i = 0; callee_info->size_time_table.iterate (i, &e); i++)
      {
-      predicate p;
+      ipa_predicate p;
        p = e->exec_predicate.remap_after_inlining
  			     (info, params_summary,
  			      callee_info, operand_map,
  			      offset_map, clause,
  			      toplev_predicate);
-      predicate nonconstp;
+      ipa_predicate nonconstp;
        nonconstp = e->nonconst_predicate.remap_after_inlining
  				     (info, params_summary,
  				      callee_info, operand_map,
@@ -4230,7 +4234,7 @@ ipa_update_overall_fn_summary (struct cgraph_node *node, bool reset)
    if (node->callees || node->indirect_calls)
      estimate_calls_size_and_time (node, &size_info->size, &info->min_size,
  				  &info->time, NULL,
-				  ~(clause_t) (1 << predicate::false_condition),
+				  ~(clause_t) (1 << ipa_predicate::false_condition),
  				  NULL);
    size_info->size = RDIV (size_info->size, ipa_fn_summary::size_scale);
    info->min_size = RDIV (info->min_size, ipa_fn_summary::size_scale);
@@ -4318,7 +4322,7 @@ read_ipa_call_summary (class lto_input_block *ib, struct cgraph_edge *e,
  {
    class ipa_call_summary *es = prevails
  				? ipa_call_summaries->get_create (e) : NULL;
-  predicate p;
+  ipa_predicate p;
    int length, i;
  
    int size = streamer_read_uhwi (ib);
@@ -4399,7 +4403,7 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data,
        lto_symtab_encoder_t encoder;
        struct bitpack_d bp;
        struct cgraph_edge *e;
-      predicate p;
+      ipa_predicate p;
  
        index = streamer_read_uhwi (&ib);
        encoder = file_data->symtab_node_encoder;
diff --git a/gcc/ipa-fnsummary.h b/gcc/ipa-fnsummary.h
index 78399b0b9bb..fdfbd660e70 100644
--- a/gcc/ipa-fnsummary.h
+++ b/gcc/ipa-fnsummary.h
@@ -76,11 +76,11 @@ class size_time_entry
  {
  public:
    /* Predicate for code to be executed.  */
-  predicate exec_predicate;
+  ipa_predicate exec_predicate;
    /* Predicate for value to be constant and optimized out in a specialized copy.
       When deciding on specialization this makes it possible to see how much
       the executed code paths will simplify.  */
-  predicate nonconst_predicate;
+  ipa_predicate nonconst_predicate;
    int size;
    sreal time;
  };
@@ -114,7 +114,7 @@ struct GTY(()) ipa_freqcounting_predicate
    /* The described event happens with this frequency... */
    sreal freq;
    /* ...when this predicate evaluates to false. */
-  class predicate * GTY((skip)) predicate;
+  ipa_predicate * GTY((skip)) predicate;
  };
  
  /* Function inlining information.  */
@@ -203,7 +203,8 @@ public:
    int scc_no;
  
    /* Record time and size under given predicates.  */
-  void account_size_time (int, sreal, const predicate &, const predicate &,
+  void account_size_time (int, sreal, const ipa_predicate &,
+			  const ipa_predicate &,
  		  	  bool call = false);
  
    /* We keep values scaled up, so fractional sizes can be accounted.  */
@@ -286,7 +287,7 @@ public:
    /* Default destructor.  */
    ~ipa_call_summary ();
  
-  class predicate *predicate;
+  ipa_predicate *predicate;
    /* Vector indexed by parameters.  */
    vec<inline_param_summary> param;
    /* Estimated size and time of the call statement.  */
diff --git a/gcc/ipa-predicate.c b/gcc/ipa-predicate.c
index e4b11ec3ae3..48318cc6091 100644
--- a/gcc/ipa-predicate.c
+++ b/gcc/ipa-predicate.c
@@ -69,7 +69,7 @@ expr_eval_ops_equal_p (expr_eval_ops ops1, expr_eval_ops ops2)
     sane.  */
  
  void
-predicate::add_clause (conditions conditions, clause_t new_clause)
+ipa_predicate::add_clause (conditions conditions, clause_t new_clause)
  {
    int i;
    int i2;
@@ -81,7 +81,7 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
      return;
  
    /* False clause makes the whole predicate false.  Kill the other variants.  */
-  if (new_clause == (1 << predicate::false_condition))
+  if (new_clause == (1 << ipa_predicate::false_condition))
      {
        *this = false;
        return;
@@ -90,7 +90,7 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
      return;
  
    /* No one should be silly enough to add false into nontrivial clauses.  */
-  gcc_checking_assert (!(new_clause & (1 << predicate::false_condition)));
+  gcc_checking_assert (!(new_clause & (1 << ipa_predicate::false_condition)));
  
    /* Look where to insert the new_clause.  At the same time prune out
       new_clauses of P that are implied by the new new_clause and thus
@@ -123,13 +123,13 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
    /* Look for clauses that are obviously true.  I.e.
       op0 == 5 || op0 != 5.  */
    if (conditions)
-    for (c1 = predicate::first_dynamic_condition;
+    for (c1 = ipa_predicate::first_dynamic_condition;
  	 c1 < num_conditions; c1++)
        {
  	condition *cc1;
  	if (!(new_clause & (1 << c1)))
  	  continue;
-	cc1 = &(*conditions)[c1 - predicate::first_dynamic_condition];
+	cc1 = &(*conditions)[c1 - ipa_predicate::first_dynamic_condition];
  	/* We have no way to represent !changed and !is_not_constant
  	   and thus there is no point for looking for them.  */
  	if (cc1->code == changed || cc1->code == is_not_constant)
@@ -138,7 +138,7 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
  	  if (new_clause & (1 << c2))
  	    {
  	      condition *cc2 =
-		&(*conditions)[c2 - predicate::first_dynamic_condition];
+		&(*conditions)[c2 - ipa_predicate::first_dynamic_condition];
  	      if (cc1->operand_num == cc2->operand_num
  		  && vrp_operand_equal_p (cc1->val, cc2->val)
  		  && cc2->code != is_not_constant
@@ -170,8 +170,8 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
  
  /* Do THIS &= P.  */
  
-predicate &
-predicate::operator &= (const predicate &p)
+ipa_predicate &
+ipa_predicate::operator &= (const ipa_predicate &p)
  {
    /* Avoid busy work.  */
    if (p == false || *this == true)
@@ -184,13 +184,13 @@ predicate::operator &= (const predicate &p)
  
    int i;
  
-  /* See how far predicates match.  */
+  /* See how far ipa_predicates match.  */
    for (i = 0; m_clause[i] && m_clause[i] == p.m_clause[i]; i++)
      {
        gcc_checking_assert (i < max_clauses);
      }
  
-  /* Combine the predicates rest.  */
+  /* Combine the ipa_predicates rest.  */
    for (; p.m_clause[i]; i++)
      {
        gcc_checking_assert (i < max_clauses);
@@ -203,9 +203,9 @@ predicate::operator &= (const predicate &p)
  
  /* Return THIS | P2.  */
  
-predicate
-predicate::or_with (conditions conditions,
-	            const predicate &p) const
+ipa_predicate
+ipa_predicate::or_with (conditions conditions,
+			const ipa_predicate &p) const
  {
    /* Avoid busy work.  */
    if (p == false || *this == true || *this == p)
@@ -214,7 +214,7 @@ predicate::or_with (conditions conditions,
      return p;
  
    /* OK, combine the predicates.  */
-  predicate out = true;
+  ipa_predicate out = true;
  
    for (int i = 0; m_clause[i]; i++)
      for (int j = 0; p.m_clause[j]; j++)
@@ -230,7 +230,7 @@ predicate::or_with (conditions conditions,
     if predicate P is known to be false.  */
  
  bool
-predicate::evaluate (clause_t possible_truths) const
+ipa_predicate::evaluate (clause_t possible_truths) const
  {
    int i;
  
@@ -238,7 +238,7 @@ predicate::evaluate (clause_t possible_truths) const
    if (*this == true)
      return true;
  
-  gcc_assert (!(possible_truths & (1 << predicate::false_condition)));
+  gcc_assert (!(possible_truths & (1 << ipa_predicate::false_condition)));
  
    /* See if we can find clause we can disprove.  */
    for (i = 0; m_clause[i]; i++)
@@ -254,7 +254,7 @@ predicate::evaluate (clause_t possible_truths) const
     instruction will be recomputed per invocation of the inlined call.  */
  
  int
-predicate::probability (conditions conds,
+ipa_predicate::probability (conditions conds,
  	                clause_t possible_truths,
  	                vec<inline_param_summary> inline_param_summary) const
  {
@@ -268,7 +268,7 @@ predicate::probability (conditions conds,
    if (*this == false)
      return 0;
  
-  gcc_assert (!(possible_truths & (1 << predicate::false_condition)));
+  gcc_assert (!(possible_truths & (1 << ipa_predicate::false_condition)));
  
    /* See if we can find clause we can disprove.  */
    for (i = 0; m_clause[i]; i++)
@@ -285,11 +285,11 @@ predicate::probability (conditions conds,
  	  for (i2 = 0; i2 < num_conditions; i2++)
  	    if ((m_clause[i] & possible_truths) & (1 << i2))
  	      {
-		if (i2 >= predicate::first_dynamic_condition)
+		if (i2 >= ipa_predicate::first_dynamic_condition)
  		  {
  		    condition *c =
-		      &(*conds)[i2 - predicate::first_dynamic_condition];
-		    if (c->code == predicate::changed
+		      &(*conds)[i2 - ipa_predicate::first_dynamic_condition];
+		    if (c->code == ipa_predicate::changed
  			&& (c->operand_num <
  			    (int) inline_param_summary.length ()))
  		      {
@@ -318,13 +318,13 @@ void
  dump_condition (FILE *f, conditions conditions, int cond)
  {
    condition *c;
-  if (cond == predicate::false_condition)
+  if (cond == ipa_predicate::false_condition)
      fprintf (f, "false");
-  else if (cond == predicate::not_inlined_condition)
+  else if (cond == ipa_predicate::not_inlined_condition)
      fprintf (f, "not inlined");
    else
      {
-      c = &(*conditions)[cond - predicate::first_dynamic_condition];
+      c = &(*conditions)[cond - ipa_predicate::first_dynamic_condition];
        fprintf (f, "op%i", c->operand_num);
        if (c->agg_contents)
  	fprintf (f, "[%soffset: " HOST_WIDE_INT_PRINT_DEC "]",
@@ -406,12 +406,12 @@ dump_condition (FILE *f, conditions conditions, int cond)
  	  fprintf (f, ")");
  	}
  
-      if (c->code == predicate::is_not_constant)
+      if (c->code == ipa_predicate::is_not_constant)
  	{
  	  fprintf (f, " not constant");
  	  return;
  	}
-      if (c->code == predicate::changed)
+      if (c->code == ipa_predicate::changed)
  	{
  	  fprintf (f, " changed");
  	  return;
@@ -432,7 +432,7 @@ dump_clause (FILE *f, conditions conds, clause_t clause)
    fprintf (f, "(");
    if (!clause)
      fprintf (f, "true");
-  for (i = 0; i < predicate::num_conditions; i++)
+  for (i = 0; i < ipa_predicate::num_conditions; i++)
      if (clause & (1 << i))
        {
  	if (found)
@@ -445,10 +445,10 @@ dump_clause (FILE *f, conditions conds, clause_t clause)
  
  
  /* Dump THIS to F.  CONDS a vector of conditions used when evaluating
-   predicates.  When NL is true new line is output at the end of dump.  */
+   ipa_predicates.  When NL is true new line is output at the end of dump.  */
  
  void
-predicate::dump (FILE *f, conditions conds, bool nl) const
+ipa_predicate::dump (FILE *f, conditions conds, bool nl) const
  {
    int i;
    if (*this == true)
@@ -466,7 +466,7 @@ predicate::dump (FILE *f, conditions conds, bool nl) const
  
  
  void
-predicate::debug (conditions conds) const
+ipa_predicate::debug (conditions conds) const
  {
    dump (stderr, conds);
  }
@@ -476,11 +476,11 @@ predicate::debug (conditions conds) const
     POSSIBLE_TRUTHS is clause of possible truths in the duplicated node,
     INFO is inline summary of the duplicated node.  */
  
-predicate
-predicate::remap_after_duplication (clause_t possible_truths)
+ipa_predicate
+ipa_predicate::remap_after_duplication (clause_t possible_truths)
  {
    int j;
-  predicate out = true;
+  ipa_predicate out = true;
    for (j = 0; m_clause[j]; j++)
      if (!(possible_truths & m_clause[j]))
        return false;
@@ -503,26 +503,26 @@ predicate::remap_after_duplication (clause_t possible_truths)
     because they might not be preserved (and should be considered offset zero
     for other purposes).  */
  
-predicate
-predicate::remap_after_inlining (class ipa_fn_summary *info,
+ipa_predicate
+ipa_predicate::remap_after_inlining (class ipa_fn_summary *info,
  				 class ipa_node_params *params_summary,
  				 class ipa_fn_summary *callee_info,
  				 const vec<int> &operand_map,
  				 const vec<HOST_WIDE_INT> &offset_map,
  				 clause_t possible_truths,
-				 const predicate &toplev_predicate)
+				 const ipa_predicate &toplev_predicate)
  {
    int i;
-  predicate out = true;
+  ipa_predicate out = true;
  
-  /* True predicate is easy.  */
+  /* True ipa_predicate is easy.  */
    if (*this == true)
      return toplev_predicate;
    for (i = 0; m_clause[i]; i++)
      {
        clause_t clause = m_clause[i];
        int cond;
-      predicate clause_predicate = false;
+      ipa_predicate clause_predicate = false;
  
        gcc_assert (i < max_clauses);
  
@@ -530,16 +530,15 @@ predicate::remap_after_inlining (class ipa_fn_summary *info,
  	/* Do we have condition we can't disprove?   */
  	if (clause & possible_truths & (1 << cond))
  	  {
-	    predicate cond_predicate;
+	    ipa_predicate cond_predicate;
  	    /* Work out if the condition can translate to predicate in the
  	       inlined function.  */
-	    if (cond >= predicate::first_dynamic_condition)
+	    if (cond >= ipa_predicate::first_dynamic_condition)
  	      {
  		struct condition *c;
  
-		c = &(*callee_info->conds)[cond
-					   -
-					   predicate::first_dynamic_condition];
+		int index = cond - ipa_predicate::first_dynamic_condition;
+		c = &(*callee_info->conds)[index];
  		/* See if we can remap condition operand to caller's operand.
  		   Otherwise give up.  */
  		if (!operand_map.exists ()
@@ -576,7 +575,7 @@ predicate::remap_after_inlining (class ipa_fn_summary *info,
  	    /* Fixed conditions remains same, construct single
  	       condition predicate.  */
  	    else
-	      cond_predicate = predicate::predicate_testing_cond (cond);
+	      cond_predicate = ipa_predicate::predicate_testing_cond (cond);
  	    clause_predicate = clause_predicate.or_with (info->conds,
  					                 cond_predicate);
  	  }
@@ -590,7 +589,7 @@ predicate::remap_after_inlining (class ipa_fn_summary *info,
  /* Read predicate from IB.  */
  
  void
-predicate::stream_in (class lto_input_block *ib)
+ipa_predicate::stream_in (class lto_input_block *ib)
  {
    clause_t clause;
    int k = 0;
@@ -611,7 +610,7 @@ predicate::stream_in (class lto_input_block *ib)
  /* Write predicate P to OB.  */
  
  void
-predicate::stream_out (struct output_block *ob)
+ipa_predicate::stream_out (struct output_block *ob)
  {
    int j;
    for (j = 0; m_clause[j]; j++)
@@ -629,7 +628,7 @@ predicate::stream_out (struct output_block *ob)
     aggregate it is.  It can be NULL, which means this not a load from an
     aggregate.  */
  
-predicate
+ipa_predicate
  add_condition (class ipa_fn_summary *summary,
  	       class ipa_node_params *params_summary,
  	       int operand_num,
@@ -669,10 +668,10 @@ add_condition (class ipa_fn_summary *summary,
  	  && c->agg_contents == agg_contents
  	  && expr_eval_ops_equal_p (c->param_ops, param_ops)
  	  && (!agg_contents || (c->offset == offset && c->by_ref == by_ref)))
-	return predicate::predicate_testing_cond (i);
+	return ipa_predicate::predicate_testing_cond (i);
      }
    /* Too many conditions.  Give up and return constant true.  */
-  if (i == predicate::num_conditions - predicate::first_dynamic_condition)
+  if (i == ipa_predicate::num_conditions - ipa_predicate::first_dynamic_condition)
      return true;
  
    new_cond.operand_num = operand_num;
@@ -694,5 +693,5 @@ add_condition (class ipa_fn_summary *summary,
  
    vec_safe_push (summary->conds, new_cond);
  
-  return predicate::predicate_testing_cond (i);
+  return ipa_predicate::predicate_testing_cond (i);
  }
diff --git a/gcc/ipa-predicate.h b/gcc/ipa-predicate.h
index ac52b54aa36..190dcedc93f 100644
--- a/gcc/ipa-predicate.h
+++ b/gcc/ipa-predicate.h
@@ -111,7 +111,7 @@ typedef vec<condition, va_gc> *conditions;
     is not.  */
  
  typedef uint32_t clause_t;
-class predicate
+class ipa_predicate
  {
  public:
    enum predicate_conditions
@@ -138,7 +138,7 @@ public:
  
  
    /* Initialize predicate either to true of false depending on P.  */
-  inline predicate (bool p = true)
+  inline ipa_predicate (bool p = true)
      {
        if (p)
          /* True predicate.  */
@@ -149,42 +149,42 @@ public:
      }
  
    /* Sanity check that we do not mix pointers to predicates with predicates.  */
-  inline predicate (predicate *)
+  inline ipa_predicate (ipa_predicate *)
      {
        gcc_unreachable ();
      }
  
    /* Return predicate testing condition I.  */
-  static inline predicate predicate_testing_cond (int i)
+  static inline ipa_predicate predicate_testing_cond (int i)
      {
-      class predicate p;
+      ipa_predicate p;
        p.set_to_cond (i + first_dynamic_condition);
        return p;
      }
  
    /* Return predicate testing that function was not inlined.  */
-  static predicate not_inlined (void)
+  static ipa_predicate not_inlined (void)
      {
-      class predicate p;
+      ipa_predicate p;
        p.set_to_cond (not_inlined_condition);
        return p;
      }
  
-  /* Compute logical and of predicates.  */
-  predicate & operator &= (const predicate &);
-  inline predicate operator &(const predicate &p) const
+  /* Compute logical and of ipa_predicates.  */
+  ipa_predicate & operator &= (const ipa_predicate &);
+  inline ipa_predicate operator &(const ipa_predicate &p) const
      {
-      predicate ret = *this;
+      ipa_predicate ret = *this;
        ret &= p;
        return ret;
      }
  
-  /* Compute logical or of predicates.  This is not operator because
+  /* Compute logical or of ipa_predicates.  This is not operator because
       extra parameter CONDITIONS is needed  */
-  predicate or_with (conditions, const predicate &) const;
+  ipa_predicate or_with (conditions, const ipa_predicate &) const;
  
-  /* Return true if predicates are known to be equal.  */
-  inline bool operator==(const predicate &p2) const
+  /* Return true if ipa_predicates are known to be equal.  */
+  inline bool operator==(const ipa_predicate &p2) const
      {
        int i;
        for (i = 0; m_clause[i]; i++)
@@ -215,7 +215,7 @@ public:
        return false;
      }
  
-  inline bool operator!=(const predicate &p2) const
+  inline bool operator!=(const ipa_predicate &p2) const
      {
        return !(*this == p2);
      }
@@ -236,18 +236,19 @@ public:
    void dump (FILE *f, conditions, bool nl=true) const;
    void DEBUG_FUNCTION debug (conditions) const;
  
-  /* Return predicate equal to THIS after duplication.  */
-  predicate remap_after_duplication (clause_t);
+  /* Return ipa_predicate equal to THIS after duplication.  */
+  ipa_predicate remap_after_duplication (clause_t);
  
-  /* Return predicate equal to THIS after inlining.  */
-  predicate remap_after_inlining (class ipa_fn_summary *,
-		  		  class ipa_node_params *params_summary,
-			          class ipa_fn_summary *,
-				  const vec<int> &, const vec<HOST_WIDE_INT> &,
-				  clause_t, const predicate &);
+  /* Return ipa_predicate equal to THIS after inlining.  */
+  ipa_predicate remap_after_inlining (class ipa_fn_summary *,
+				      ipa_node_params *params_summary,
+				      ipa_fn_summary *,
+				      const vec<int> &,
+				      const vec<HOST_WIDE_INT> &,
+				      clause_t, const ipa_predicate &);
  
-  void stream_in (class lto_input_block *);
-  void stream_out (struct output_block *);
+  void stream_in (lto_input_block *);
+  void stream_out (output_block *);
  
  private:
    static const int max_clauses = 8;
@@ -264,9 +265,9 @@ private:
  };
  
  void dump_condition (FILE *f, conditions conditions, int cond);
-predicate add_condition (class ipa_fn_summary *summary,
-			 class ipa_node_params *params_summary,
-	       		 int operand_num,
-			 tree type, struct agg_position_info *aggpos,
-			 enum tree_code code, tree val,
-			 expr_eval_ops param_ops = NULL);
+ipa_predicate add_condition (ipa_fn_summary *summary,
+			     ipa_node_params *params_summary,
+			     int operand_num,
+			     tree type, struct agg_position_info *aggpos,
+			     enum tree_code code, tree val,
+			     expr_eval_ops param_ops = NULL);
-- 
2.33.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Rename predicate class to ipa_predicate
  2021-11-03 10:23 [PATCH] Rename predicate class to ipa_predicate Martin Liška
@ 2021-11-03 12:59 ` Jan Hubicka
  2021-11-03 13:01   ` Martin Liška
  2021-11-03 16:29 ` Martin Sebor
  1 sibling, 1 reply; 4+ messages in thread
From: Jan Hubicka @ 2021-11-03 12:59 UTC (permalink / raw)
  To: Martin Liška; +Cc: gcc-patches, Martin Sebor

> Hello.
> 
> The renaming patch fixes a -Wodr warning seen and reported in the PR.
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> 
> 	PR bootstrap/102828
> 
> gcc/ChangeLog:
> 
> 	* ipa-fnsummary.c (edge_predicate_pool): Rename predicate class to ipa_predicate.
> 	(ipa_fn_summary::account_size_time): Likewise.
> 	(edge_set_predicate): Likewise.
> 	(set_hint_predicate): Likewise.
> 	(add_freqcounting_predicate): Likewise.
> 	(evaluate_conditions_for_known_args): Likewise.
> 	(evaluate_properties_for_edge): Likewise.
> 	(remap_freqcounting_preds_after_dup): Likewise.
> 	(ipa_fn_summary_t::duplicate): Likewise.
> 	(set_cond_stmt_execution_predicate): Likewise.
> 	(set_switch_stmt_execution_predicate): Likewise.
> 	(compute_bb_predicates): Likewise.
> 	(will_be_nonconstant_expr_predicate): Likewise.
> 	(will_be_nonconstant_predicate): Likewise.
> 	(phi_result_unknown_predicate): Likewise.
> 	(predicate_for_phi_result): Likewise.
> 	(analyze_function_body): Likewise.
> 	(compute_fn_summary): Likewise.
> 	(summarize_calls_size_and_time): Likewise.
> 	(estimate_calls_size_and_time): Likewise.
> 	(ipa_call_context::estimate_size_and_time): Likewise.
> 	(remap_edge_summaries): Likewise.
> 	(remap_freqcounting_predicate): Likewise.
> 	(ipa_merge_fn_summary_after_inlining): Likewise.
> 	(ipa_update_overall_fn_summary): Likewise.
> 	(read_ipa_call_summary): Likewise.
> 	(inline_read_section): Likewise.
> 	* ipa-fnsummary.h (struct ipa_freqcounting_predicate): Likewise.
> 	* ipa-predicate.c (predicate::add_clause): Likewise.
> 	(ipa_predicate::add_clause): Likewise.
> 	(predicate::or_with): Likewise.
> 	(ipa_predicate::or_with): Likewise.
> 	(predicate::evaluate): Likewise.
> 	(ipa_predicate::evaluate): Likewise.
> 	(predicate::probability): Likewise.
> 	(ipa_predicate::probability): Likewise.
> 	(dump_condition): Likewise.
> 	(dump_clause): Likewise.
> 	(predicate::dump): Likewise.
> 	(ipa_predicate::dump): Likewise.
> 	(predicate::debug): Likewise.
> 	(ipa_predicate::debug): Likewise.
> 	(predicate::remap_after_duplication): Likewise.
> 	(ipa_predicate::remap_after_duplication): Likewise.
> 	(predicate::remap_after_inlining): Likewise.
> 	(ipa_predicate::remap_after_inlining): Likewise.
> 	(predicate::stream_in): Likewise.
> 	(ipa_predicate::stream_in): Likewise.
> 	(predicate::stream_out): Likewise.
> 	(ipa_predicate::stream_out): Likewise.
> 	(add_condition): Likewise.
> 	* ipa-predicate.h (class predicate): Likewise.
> 	(class ipa_predicate): Likewise.
> 	(add_condition): Likewise.

OK (even thought the predicates are not necessarily limited to IPA
passes :).

Thanks,
Honza

> ---
>  gcc/ipa-fnsummary.c | 234 ++++++++++++++++++++++----------------------
>  gcc/ipa-fnsummary.h |  11 ++-
>  gcc/ipa-predicate.c | 101 ++++++++++---------
>  gcc/ipa-predicate.h |  65 ++++++------
>  4 files changed, 208 insertions(+), 203 deletions(-)
> 
> diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c
> index ac6eec30af8..2cfa9a6d0e9 100644
> --- a/gcc/ipa-fnsummary.c
> +++ b/gcc/ipa-fnsummary.c
> @@ -94,7 +94,7 @@ fast_function_summary <ipa_size_summary *, va_heap> *ipa_size_summaries;
>  fast_call_summary <ipa_call_summary *, va_heap> *ipa_call_summaries;
>  /* Edge predicates goes here.  */
> -static object_allocator<predicate> edge_predicate_pool ("edge predicates");
> +static object_allocator<ipa_predicate> edge_predicate_pool ("edge predicates");
>  /* Dump IPA hints.  */
> @@ -162,14 +162,14 @@ ipa_dump_hints (FILE *f, ipa_hints hints)
>  void
>  ipa_fn_summary::account_size_time (int size, sreal time,
> -				   const predicate &exec_pred,
> -				   const predicate &nonconst_pred_in,
> +				   const ipa_predicate &exec_pred,
> +				   const ipa_predicate &nonconst_pred_in,
>  				   bool call)
>  {
>    size_time_entry *e;
>    bool found = false;
>    int i;
> -  predicate nonconst_pred;
> +  ipa_predicate nonconst_pred;
>    vec<size_time_entry> *table = call ? &call_size_time_table : &size_time_table;
>    if (exec_pred == false)
> @@ -271,7 +271,7 @@ redirect_to_unreachable (struct cgraph_edge *e)
>  /* Set predicate for edge E.  */
>  static void
> -edge_set_predicate (struct cgraph_edge *e, predicate *predicate)
> +edge_set_predicate (struct cgraph_edge *e, ipa_predicate *predicate)
>  {
>    /* If the edge is determined to be never executed, redirect it
>       to BUILTIN_UNREACHABLE to make it clear to IPA passes the call will
> @@ -301,7 +301,7 @@ edge_set_predicate (struct cgraph_edge *e, predicate *predicate)
>  /* Set predicate for hint *P.  */
>  static void
> -set_hint_predicate (predicate **p, predicate new_predicate)
> +set_hint_predicate (ipa_predicate **p, ipa_predicate new_predicate)
>  {
>    if (new_predicate == false || new_predicate == true)
>      {
> @@ -324,7 +324,7 @@ set_hint_predicate (predicate **p, predicate new_predicate)
>  static void
>  add_freqcounting_predicate (vec<ipa_freqcounting_predicate, va_gc> **v,
> -			    const predicate &new_predicate, sreal add_freq,
> +			    const ipa_predicate &new_predicate, sreal add_freq,
>  			    unsigned max_num_predicates)
>  {
>    if (new_predicate == false || new_predicate == true)
> @@ -372,8 +372,8 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
>  				    clause_t *ret_clause,
>  				    clause_t *ret_nonspec_clause)
>  {
> -  clause_t clause = inline_p ? 0 : 1 << predicate::not_inlined_condition;
> -  clause_t nonspec_clause = 1 << predicate::not_inlined_condition;
> +  clause_t clause = inline_p ? 0 : 1 << ipa_predicate::not_inlined_condition;
> +  clause_t nonspec_clause = 1 << ipa_predicate::not_inlined_condition;
>    class ipa_fn_summary *info = ipa_fn_summaries->get (node);
>    int i;
>    struct condition *c;
> @@ -396,7 +396,7 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
>        if (c->agg_contents)
>  	{
> -	  if (c->code == predicate::changed
> +	  if (c->code == ipa_predicate::changed
>  	      && !c->by_ref
>  	      && (avals->safe_sval_at(c->operand_num) == error_mark_node))
>  	    continue;
> @@ -413,27 +413,28 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
>        else
>  	{
>  	  val = avals->safe_sval_at (c->operand_num);
> -	  if (val && val == error_mark_node && c->code != predicate::changed)
> +	  if (val && val == error_mark_node
> +	      && c->code != ipa_predicate::changed)
>  	    val = NULL_TREE;
>  	}
>        if (!val
> -	  && (c->code == predicate::changed
> -	      || c->code == predicate::is_not_constant))
> +	  && (c->code == ipa_predicate::changed
> +	      || c->code == ipa_predicate::is_not_constant))
>  	{
> -	  clause |= 1 << (i + predicate::first_dynamic_condition);
> -	  nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
> +	  clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
> +	  nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
>  	  continue;
>  	}
> -      if (c->code == predicate::changed)
> +      if (c->code == ipa_predicate::changed)
>  	{
> -	  nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
> +	  nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
>  	  continue;
>  	}
> -      if (c->code == predicate::is_not_constant)
> +      if (c->code == ipa_predicate::is_not_constant)
>  	{
> -	  nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
> +	  nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
>  	  continue;
>  	}
> @@ -472,8 +473,9 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
>  	    continue;
>  	  if (res && integer_onep (res))
>  	    {
> -	      clause |= 1 << (i + predicate::first_dynamic_condition);
> -	      nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
> +	      clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
> +	      nonspec_clause
> +		|= 1 << (i + ipa_predicate::first_dynamic_condition);
>  	      continue;
>  	    }
>  	}
> @@ -528,8 +530,8 @@ evaluate_conditions_for_known_args (struct cgraph_node *node,
>  	    }
>  	}
> -      clause |= 1 << (i + predicate::first_dynamic_condition);
> -      nonspec_clause |= 1 << (i + predicate::first_dynamic_condition);
> +      clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
> +      nonspec_clause |= 1 << (i + ipa_predicate::first_dynamic_condition);
>      }
>    *ret_clause = clause;
>    if (ret_nonspec_clause)
> @@ -587,7 +589,7 @@ evaluate_properties_for_edge (struct cgraph_edge *e, bool inline_p,
>    class ipa_edge_args *args;
>    if (clause_ptr)
> -    *clause_ptr = inline_p ? 0 : 1 << predicate::not_inlined_condition;
> +    *clause_ptr = inline_p ? 0 : 1 << ipa_predicate::not_inlined_condition;
>    if (ipa_node_params_sum
>        && !e->call_stmt_cannot_inline_p
> @@ -785,7 +787,7 @@ remap_freqcounting_preds_after_dup (vec<ipa_freqcounting_predicate, va_gc> *v,
>    int len = res->length();
>    for (int i = len - 1; i >= 0; i--)
>      {
> -      predicate new_predicate
> +      ipa_predicate new_predicate
>  	= (*res)[i].predicate->remap_after_duplication (possible_truths);
>        /* We do not want to free previous predicate; it is used by node
>  	 origin.  */
> @@ -823,7 +825,7 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
>        int count = ipa_get_param_count (parms_info);
>        int i, j;
>        clause_t possible_truths;
> -      predicate true_pred = true;
> +      ipa_predicate true_pred = true;
>        size_time_entry *e;
>        int optimized_out_size = 0;
>        bool inlined_to_p = false;
> @@ -860,8 +862,8 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
>           to be true.  */
>        for (i = 0; src_info->size_time_table.iterate (i, &e); i++)
>  	{
> -	  predicate new_exec_pred;
> -	  predicate new_nonconst_pred;
> +	  ipa_predicate new_exec_pred;
> +	  ipa_predicate new_nonconst_pred;
>  	  new_exec_pred = e->exec_predicate.remap_after_duplication
>  				 (possible_truths);
>  	  new_nonconst_pred = e->nonconst_predicate.remap_after_duplication
> @@ -877,7 +879,7 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
>           Also copy constantness arrays.   */
>        for (edge = dst->callees; edge; edge = next)
>  	{
> -	  predicate new_predicate;
> +	  ipa_predicate new_predicate;
>  	  class ipa_call_summary *es = ipa_call_summaries->get (edge);
>  	  next = edge->next_callee;
> @@ -896,7 +898,7 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
>           Also copy constantness arrays.   */
>        for (edge = dst->indirect_calls; edge; edge = next)
>  	{
> -	  predicate new_predicate;
> +	  ipa_predicate new_predicate;
>  	  class ipa_call_summary *es = ipa_call_summaries->get (edge);
>  	  next = edge->next_callee;
> @@ -944,13 +946,13 @@ ipa_fn_summary_t::duplicate (cgraph_node *src,
>        ipa_freqcounting_predicate *f;
>        for (int i = 0; vec_safe_iterate (info->loop_iterations, i, &f); i++)
>  	{
> -	  predicate p = *f->predicate;
> +	  ipa_predicate p = *f->predicate;
>  	  f->predicate = NULL;
>  	  set_hint_predicate (&f->predicate, p);
>  	}
>        for (int i = 0; vec_safe_iterate (info->loop_strides, i, &f); i++)
>  	{
> -	  predicate p = *f->predicate;
> +	  ipa_predicate p = *f->predicate;
>  	  f->predicate = NULL;
>  	  set_hint_predicate (&f->predicate, p);
>  	}
> @@ -1609,12 +1611,12 @@ set_cond_stmt_execution_predicate (struct ipa_func_body_info *fbi,
>  	  if (this_code != ERROR_MARK
>  	      && !dominated_by_p (CDI_POST_DOMINATORS, bb, e->dest))
>  	    {
> -	      predicate p
> +	      ipa_predicate p
>  		= add_condition (summary, params_summary, index,
>  			       	 param_type, &aggpos,
>  				 this_code, gimple_cond_rhs (last), param_ops);
>  	      e->aux = edge_predicate_pool.allocate ();
> -	      *(predicate *) e->aux = p;
> +	      *(ipa_predicate *) e->aux = p;
>  	    }
>  	}
>        vec_free (param_ops);
> @@ -1646,11 +1648,11 @@ set_cond_stmt_execution_predicate (struct ipa_func_body_info *fbi,
>      add_builtin_constant_p_parm (summary, index);
>    FOR_EACH_EDGE (e, ei, bb->succs) if (e->flags & EDGE_FALSE_VALUE)
>      {
> -      predicate p = add_condition (summary, params_summary, index,
> +      ipa_predicate p = add_condition (summary, params_summary, index,
>  		     		   param_type, &aggpos,
> -				   predicate::is_not_constant, NULL_TREE);
> +				   ipa_predicate::is_not_constant, NULL_TREE);
>        e->aux = edge_predicate_pool.allocate ();
> -      *(predicate *) e->aux = p;
> +      *(ipa_predicate *) e->aux = p;
>      }
>  }
> @@ -1701,7 +1703,7 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
>    FOR_EACH_EDGE (e, ei, bb->succs)
>      {
>        e->aux = edge_predicate_pool.allocate ();
> -      *(predicate *) e->aux = false;
> +      *(ipa_predicate *) e->aux = false;
>      }
>    e = gimple_switch_edge (cfun, last, 0);
> @@ -1718,7 +1720,7 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
>        tree cl = gimple_switch_label (last, case_idx);
>        tree min = CASE_LOW (cl);
>        tree max = CASE_HIGH (cl);
> -      predicate p;
> +      ipa_predicate p;
>        e = gimple_switch_edge (cfun, last, case_idx);
> @@ -1742,15 +1744,15 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
>  		           &aggpos, EQ_EXPR, min, param_ops);
>        else
>  	{
> -	  predicate p1, p2;
> +	  ipa_predicate p1, p2;
>  	  p1 = add_condition (summary, params_summary, index, param_type,
>  			      &aggpos, GE_EXPR, min, param_ops);
>  	  p2 = add_condition (summary,  params_summary,index, param_type,
>  			      &aggpos, LE_EXPR, max, param_ops);
>  	  p = p1 & p2;
>  	}
> -      *(class predicate *) e->aux
> -	= p.or_with (summary->conds, *(class predicate *) e->aux);
> +      *(ipa_predicate *) e->aux
> +	= p.or_with (summary->conds, *(ipa_predicate *) e->aux);
>        /* If there are too many disjoint case ranges, predicate for default
>  	 case might become too complicated.  So add a limit here.  */
> @@ -1796,13 +1798,13 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
>    e = gimple_switch_edge (cfun, last, 0);
>    if (bound_count > bound_limit)
>      {
> -      *(class predicate *) e->aux = true;
> +      *(ipa_predicate *) e->aux = true;
>        vec_free (param_ops);
>        return;
>      }
> -  predicate p_seg = true;
> -  predicate p_all = false;
> +  ipa_predicate p_seg = true;
> +  ipa_predicate p_all = false;
>    if (vr_type != VR_RANGE)
>      {
> @@ -1857,8 +1859,8 @@ set_switch_stmt_execution_predicate (struct ipa_func_body_info *fbi,
>      }
>    p_all = p_all.or_with (summary->conds, p_seg);
> -  *(class predicate *) e->aux
> -    = p_all.or_with (summary->conds, *(class predicate *) e->aux);
> +  *(ipa_predicate *) e->aux
> +    = p_all.or_with (summary->conds, *(ipa_predicate *) e->aux);
>    vec_free (param_ops);
>  }
> @@ -1886,7 +1888,7 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
>    /* Entry block is always executable.  */
>    ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux
>      = edge_predicate_pool.allocate ();
> -  *(predicate *) ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux = true;
> +  *(ipa_predicate *) ENTRY_BLOCK_PTR_FOR_FN (my_function)->aux = true;
>    /* A simple dataflow propagation of predicates forward in the CFG.
>       TODO: work in reverse postorder.  */
> @@ -1895,17 +1897,17 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
>        done = true;
>        FOR_EACH_BB_FN (bb, my_function)
>  	{
> -	  predicate p = false;
> +	  ipa_predicate p = false;
>  	  edge e;
>  	  edge_iterator ei;
>  	  FOR_EACH_EDGE (e, ei, bb->preds)
>  	    {
>  	      if (e->src->aux)
>  		{
> -		  predicate this_bb_predicate
> -		    = *(predicate *) e->src->aux;
> +		  ipa_predicate this_bb_predicate
> +		    = *(ipa_predicate *) e->src->aux;
>  		  if (e->aux)
> -		    this_bb_predicate &= (*(class predicate *) e->aux);
> +		    this_bb_predicate &= (*(ipa_predicate *) e->aux);
>  		  p = p.or_with (summary->conds, this_bb_predicate);
>  		  if (p == true)
>  		    break;
> @@ -1919,18 +1921,18 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
>  		{
>  		  done = false;
>  		  bb->aux = edge_predicate_pool.allocate ();
> -		  *((predicate *) bb->aux) = p;
> +		  *((ipa_predicate *) bb->aux) = p;
>  		}
> -	      else if (p != *(predicate *) bb->aux)
> +	      else if (p != *(ipa_predicate *) bb->aux)
>  		{
>  		  /* This OR operation is needed to ensure monotonous data flow
>  		     in the case we hit the limit on number of clauses and the
>  		     and/or operations above give approximate answers.  */
> -		  p = p.or_with (summary->conds, *(predicate *)bb->aux);
> -	          if (p != *(predicate *) bb->aux)
> +		  p = p.or_with (summary->conds, *(ipa_predicate *)bb->aux);
> +		  if (p != *(ipa_predicate *)bb->aux)
>  		    {
>  		      done = false;
> -		      *((predicate *) bb->aux) = p;
> +		      *((ipa_predicate *)bb->aux) = p;
>  		    }
>  		}
> @@ -1950,15 +1952,16 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
>  		{
>  		  done = false;
>  		  pdom_bb->aux = edge_predicate_pool.allocate ();
> -		  *((predicate *) pdom_bb->aux) = p;
> +		  *((ipa_predicate *)pdom_bb->aux) = p;
>  		}
> -	      else if (p != *(predicate *) pdom_bb->aux)
> +	      else if (p != *(ipa_predicate *)pdom_bb->aux)
>  		{
> -		  p = p.or_with (summary->conds, *(predicate *)pdom_bb->aux);
> -		  if (p != *(predicate *) pdom_bb->aux)
> +		  p = p.or_with (summary->conds,
> +				 *(ipa_predicate *)pdom_bb->aux);
> +		  if (p != *(ipa_predicate *)pdom_bb->aux)
>  		    {
>  		      done = false;
> -		      *((predicate *) pdom_bb->aux) = p;
> +		      *((ipa_predicate *)pdom_bb->aux) = p;
>  		    }
>  		}
>  	    }
> @@ -1970,12 +1973,12 @@ compute_bb_predicates (struct ipa_func_body_info *fbi,
>  /* Return predicate specifying when the STMT might have result that is not
>     a compile time constant.  */
> -static predicate
> +static ipa_predicate
>  will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
>  				    class ipa_fn_summary *summary,
>  				    class ipa_node_params *params_summary,
>  				    tree expr,
> -				    vec<predicate> nonconstant_names)
> +				    vec<ipa_predicate> nonconstant_names)
>  {
>    tree parm;
>    int index;
> @@ -1986,14 +1989,14 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
>    parm = unmodified_parm (fbi, NULL, expr, NULL);
>    if (parm && (index = ipa_get_param_decl_index (fbi->info, parm)) >= 0)
>      return add_condition (summary, params_summary, index, TREE_TYPE (parm), NULL,
> -			  predicate::changed, NULL_TREE);
> +			  ipa_predicate::changed, NULL_TREE);
>    if (is_gimple_min_invariant (expr))
>      return false;
>    if (TREE_CODE (expr) == SSA_NAME)
>      return nonconstant_names[SSA_NAME_VERSION (expr)];
>    if (BINARY_CLASS_P (expr) || COMPARISON_CLASS_P (expr))
>      {
> -      predicate p1
> +      ipa_predicate p1
>  	= will_be_nonconstant_expr_predicate (fbi, summary,
>  					      params_summary,
>  					      TREE_OPERAND (expr, 0),
> @@ -2001,7 +2004,7 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
>        if (p1 == true)
>  	return p1;
> -      predicate p2
> +      ipa_predicate p2
>  	= will_be_nonconstant_expr_predicate (fbi, summary,
>  					      params_summary,
>  					      TREE_OPERAND (expr, 1),
> @@ -2010,7 +2013,7 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
>      }
>    else if (TREE_CODE (expr) == COND_EXPR)
>      {
> -      predicate p1
> +      ipa_predicate p1
>  	= will_be_nonconstant_expr_predicate (fbi, summary,
>  					      params_summary,
>  					      TREE_OPERAND (expr, 0),
> @@ -2018,7 +2021,7 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
>        if (p1 == true)
>  	return p1;
> -      predicate p2
> +      ipa_predicate p2
>  	= will_be_nonconstant_expr_predicate (fbi, summary,
>  					      params_summary,
>  					      TREE_OPERAND (expr, 1),
> @@ -2046,18 +2049,18 @@ will_be_nonconstant_expr_predicate (ipa_func_body_info *fbi,
>  /* Return predicate specifying when the STMT might have result that is not
>     a compile time constant.  */
> -static predicate
> +static ipa_predicate
>  will_be_nonconstant_predicate (struct ipa_func_body_info *fbi,
>  			       class ipa_fn_summary *summary,
>  			       class ipa_node_params *params_summary,
>  			       gimple *stmt,
> -			       vec<predicate> nonconstant_names)
> +			       vec<ipa_predicate> nonconstant_names)
>  {
> -  predicate p = true;
> +  ipa_predicate p = true;
>    ssa_op_iter iter;
>    tree use;
>    tree param_type = NULL_TREE;
> -  predicate op_non_const;
> +  ipa_predicate op_non_const;
>    bool is_load;
>    int base_index;
>    struct agg_position_info aggpos;
> @@ -2109,7 +2112,7 @@ will_be_nonconstant_predicate (struct ipa_func_body_info *fbi,
>      op_non_const =
>        add_condition (summary, params_summary,
>  		     base_index, param_type, &aggpos,
> -		     predicate::changed, NULL_TREE);
> +		     ipa_predicate::changed, NULL_TREE);
>    else
>      op_non_const = false;
>    FOR_EACH_SSA_TREE_OPERAND (use, stmt, iter, SSA_OP_USE)
> @@ -2122,7 +2125,7 @@ will_be_nonconstant_predicate (struct ipa_func_body_info *fbi,
>  	  if (index != base_index)
>  	    p = add_condition (summary, params_summary, index,
>  			       TREE_TYPE (parm), NULL,
> -			       predicate::changed, NULL_TREE);
> +			       ipa_predicate::changed, NULL_TREE);
>  	  else
>  	    continue;
>  	}
> @@ -2315,8 +2318,8 @@ phi_result_unknown_predicate (ipa_func_body_info *fbi,
>  			      ipa_fn_summary *summary,
>  			      class ipa_node_params *params_summary,
>  			      basic_block bb,
> -			      predicate *p,
> -			      vec<predicate> nonconstant_names)
> +			      ipa_predicate *p,
> +			      vec<ipa_predicate> nonconstant_names)
>  {
>    edge e;
>    edge_iterator ei;
> @@ -2374,8 +2377,8 @@ phi_result_unknown_predicate (ipa_func_body_info *fbi,
>  static void
>  predicate_for_phi_result (class ipa_fn_summary *summary, gphi *phi,
> -			  predicate *p,
> -			  vec<predicate> nonconstant_names)
> +			  ipa_predicate *p,
> +			  vec<ipa_predicate> nonconstant_names)
>  {
>    unsigned i;
> @@ -2607,9 +2610,9 @@ analyze_function_body (struct cgraph_node *node, bool early)
>    class ipa_fn_summary *info = ipa_fn_summaries->get_create (node);
>    ipa_node_params *params_summary
>      = early ? NULL : ipa_node_params_sum->get (node);
> -  predicate bb_predicate;
> +  ipa_predicate bb_predicate;
>    struct ipa_func_body_info fbi;
> -  vec<predicate> nonconstant_names = vNULL;
> +  vec<ipa_predicate> nonconstant_names = vNULL;
>    int nblocks, n;
>    int *order;
>    gimple *fix_builtin_expect_stmt;
> @@ -2664,7 +2667,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>    bb_predicate = true;
>    info->account_size_time (0, 0, bb_predicate, bb_predicate);
> -  bb_predicate = predicate::not_inlined ();
> +  bb_predicate = ipa_predicate::not_inlined ();
>    info->account_size_time (opt_for_fn (node->decl,
>  				param_uninlined_function_insns)
>  			   * ipa_fn_summary::size_scale,
> @@ -2695,7 +2698,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>        if (fbi.info)
>  	{
>  	  if (bb->aux)
> -	    bb_predicate = *(predicate *) bb->aux;
> +	    bb_predicate = *(ipa_predicate *)bb->aux;
>  	  else
>  	    bb_predicate = false;
>  	}
> @@ -2710,7 +2713,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>        if (fbi.info && nonconstant_names.exists ())
>  	{
> -	  predicate phi_predicate;
> +	  ipa_predicate phi_predicate;
>  	  bool first_phi = true;
>  	  for (gphi_iterator bsi = gsi_start_phis (bb); !gsi_end_p (bsi);
> @@ -2743,7 +2746,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  	  int this_size = estimate_num_insns (stmt, &eni_size_weights);
>  	  int this_time = estimate_num_insns (stmt, &eni_time_weights);
>  	  int prob;
> -	  predicate will_be_nonconstant;
> +	  ipa_predicate will_be_nonconstant;
>            /* This relation stmt should be folded after we remove
>               __builtin_expect call. Adjust the cost here.  */
> @@ -2776,7 +2779,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  		  && gimple_call_lhs (stmt)
>  		  && TREE_CODE (gimple_call_lhs (stmt)) == SSA_NAME)
>  		{
> -		  predicate false_p = false;
> +		  ipa_predicate false_p = false;
>  		  nonconstant_names[SSA_NAME_VERSION (gimple_call_lhs (stmt))]
>  		    = false_p;
>  		}
> @@ -2853,7 +2856,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  	      if (prob == 2 && dump_file && (dump_flags & TDF_DETAILS))
>  		fprintf (dump_file, "\t\tWill be eliminated by inlining\n");
> -	      class predicate p = bb_predicate & will_be_nonconstant;
> +	      ipa_predicate p = bb_predicate & will_be_nonconstant;
>  	      /* We can ignore statement when we proved it is never going
>  		 to happen, but we cannot do that for call statements
> @@ -2872,7 +2875,8 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  		{
>  		  if (prob)
>  		    {
> -		      predicate ip = bb_predicate & predicate::not_inlined ();
> +		      ipa_predicate ip
> +			= bb_predicate & ipa_predicate::not_inlined ();
>  		      info->account_size_time (this_size * prob,
>  					       (final_time * prob) / 2, ip,
>  					       p);
> @@ -2902,7 +2906,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  		     || TREE_CODE (op) == ARRAY_RANGE_REF)
>  		    && TREE_CODE (TREE_OPERAND (op, 1)) == SSA_NAME)
>  		  {
> -		    predicate p = bb_predicate;
> +		    ipa_predicate p = bb_predicate;
>  		    if (fbi.info)
>  		      p = p & will_be_nonconstant_expr_predicate
>  				 (&fbi, info, params_summary,
> @@ -2939,7 +2943,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>        scev_initialize ();
>        for (auto loop : loops_list (cfun, 0))
>  	{
> -	  predicate loop_iterations = true;
> +	  ipa_predicate loop_iterations = true;
>  	  sreal header_freq;
>  	  edge ex;
>  	  unsigned int j;
> @@ -2950,13 +2954,13 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  	  profile_count phdr_count = loop_preheader_edge (loop)->count ();
>  	  sreal phdr_freq = phdr_count.to_sreal_scale (entry_count);
> -	  bb_predicate = *(predicate *) loop->header->aux;
> +	  bb_predicate = *(ipa_predicate *)loop->header->aux;
>  	  auto_vec<edge> exits = get_loop_exit_edges (loop);
>  	  FOR_EACH_VEC_ELT (exits, j, ex)
>  	    if (number_of_iterations_exit (loop, ex, &niter_desc, false)
>  		&& !is_gimple_min_invariant (niter_desc.niter))
>  	    {
> -	      predicate will_be_nonconstant
> +	      ipa_predicate will_be_nonconstant
>  		= will_be_nonconstant_expr_predicate (&fbi, info,
>  						      params_summary,
>  						      niter_desc.niter,
> @@ -2977,7 +2981,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>        for (loop = loops_for_fn (cfun)->tree_root->inner;
>  	   loop != NULL; loop = loop->next)
>  	{
> -	  predicate loop_stride = true;
> +	  ipa_predicate loop_stride = true;
>  	  basic_block *body = get_loop_body (loop);
>  	  profile_count phdr_count = loop_preheader_edge (loop)->count ();
>  	  sreal phdr_freq = phdr_count.to_sreal_scale (entry_count);
> @@ -2987,7 +2991,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  	      if (!body[i]->aux)
>  		continue;
> -	      bb_predicate = *(predicate *) body[i]->aux;
> +	      bb_predicate = *(ipa_predicate *)body[i]->aux;
>  	      for (gsi = gsi_start_bb (body[i]); !gsi_end_p (gsi);
>  		   gsi_next (&gsi))
>  		{
> @@ -3007,7 +3011,7 @@ analyze_function_body (struct cgraph_node *node, bool early)
>  		      || is_gimple_min_invariant (iv.step))
>  		    continue;
> -		  predicate will_be_nonconstant
> +		  ipa_predicate will_be_nonconstant
>  		    = will_be_nonconstant_expr_predicate (&fbi, info,
>  				    			  params_summary,
>  				   			  iv.step,
> @@ -3031,12 +3035,12 @@ analyze_function_body (struct cgraph_node *node, bool early)
>        edge_iterator ei;
>        if (bb->aux)
> -	edge_predicate_pool.remove ((predicate *)bb->aux);
> +	edge_predicate_pool.remove ((ipa_predicate *)bb->aux);
>        bb->aux = NULL;
>        FOR_EACH_EDGE (e, ei, bb->succs)
>  	{
>  	  if (e->aux)
> -	    edge_predicate_pool.remove ((predicate *) e->aux);
> +	    edge_predicate_pool.remove ((ipa_predicate *)e->aux);
>  	  e->aux = NULL;
>  	}
>      }
> @@ -3092,7 +3096,7 @@ compute_fn_summary (struct cgraph_node *node, bool early)
>    if (node->thunk)
>      {
>        ipa_call_summary *es = ipa_call_summaries->get_create (node->callees);
> -      predicate t = true;
> +      ipa_predicate t = true;
>        node->can_change_signature = false;
>        es->call_stmt_size = eni_size_weights.call_cost;
> @@ -3102,7 +3106,7 @@ compute_fn_summary (struct cgraph_node *node, bool early)
>  				 param_uninlined_function_thunk_insns),
>  			       opt_for_fn (node->decl,
>  				 param_uninlined_function_thunk_time), t, t);
> -      t = predicate::not_inlined ();
> +      t = ipa_predicate::not_inlined ();
>        info->account_size_time (2 * ipa_fn_summary::size_scale, 0, t, t);
>        ipa_update_overall_fn_summary (node);
>        size_info->self_size = size_info->size;
> @@ -3335,7 +3339,7 @@ summarize_calls_size_and_time (struct cgraph_node *node,
>        estimate_edge_size_and_time (e, &size, NULL, &time, NULL, NULL);
> -      struct predicate pred = true;
> +      ipa_predicate pred = true;
>        class ipa_call_summary *es = ipa_call_summaries->get (e);
>        if (es->predicate)
> @@ -3348,7 +3352,7 @@ summarize_calls_size_and_time (struct cgraph_node *node,
>        sreal time = 0;
>        estimate_edge_size_and_time (e, &size, NULL, &time, NULL, NULL);
> -      struct predicate pred = true;
> +      ipa_predicate pred = true;
>        class ipa_call_summary *es = ipa_call_summaries->get (e);
>        if (es->predicate)
> @@ -3414,7 +3418,7 @@ estimate_calls_size_and_time (struct cgraph_node *node, int *size,
>        /* Build summary if it is absent.  */
>        if (!sum->call_size_time_table.length ())
>  	{
> -	  predicate true_pred = true;
> +	  ipa_predicate true_pred = true;
>  	  sum->account_size_time (0, 0, true_pred, true_pred, true);
>  	  summarize_calls_size_and_time (node, sum);
>  	}
> @@ -3712,8 +3716,8 @@ ipa_call_context::estimate_size_and_time (ipa_call_estimates *estimates,
>        fprintf (dump_file, "   Estimating body: %s\n"
>  	       "   Known to be false: ", m_node->dump_name ());
> -      for (i = predicate::not_inlined_condition;
> -	   i < (predicate::first_dynamic_condition
> +      for (i = ipa_predicate::not_inlined_condition;
> +	   i < (ipa_predicate::first_dynamic_condition
>  		+ (int) vec_safe_length (info->conds)); i++)
>  	if (!(m_possible_truths & (1 << i)))
>  	  {
> @@ -3984,12 +3988,12 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
>  		      const vec<int> &operand_map,
>  		      const vec<HOST_WIDE_INT> &offset_map,
>  		      clause_t possible_truths,
> -		      predicate *toplev_predicate)
> +		      ipa_predicate *toplev_predicate)
>  {
>    struct cgraph_edge *e, *next;
>    for (e = node->callees; e; e = next)
>      {
> -      predicate p;
> +      ipa_predicate p;
>        next = e->next_callee;
>        if (e->inline_failed)
> @@ -4018,7 +4022,7 @@ remap_edge_summaries (struct cgraph_edge *inlined_edge,
>    for (e = node->indirect_calls; e; e = next)
>      {
>        class ipa_call_summary *es = ipa_call_summaries->get (e);
> -      predicate p;
> +      ipa_predicate p;
>        next = e->next_callee;
>        remap_edge_params (inlined_edge, e);
> @@ -4045,13 +4049,13 @@ remap_freqcounting_predicate (class ipa_fn_summary *info,
>  			      const vec<int> &operand_map,
>  			      const vec<HOST_WIDE_INT> &offset_map,
>  			      clause_t possible_truths,
> -			      predicate *toplev_predicate)
> +			      ipa_predicate *toplev_predicate)
>  {
>    ipa_freqcounting_predicate *fcp;
>    for (int i = 0; vec_safe_iterate (v, i, &fcp); i++)
>      {
> -      predicate p
> +      ipa_predicate p
>  	= fcp->predicate->remap_after_inlining (info, params_summary,
>  						callee_info, operand_map,
>  						offset_map, possible_truths,
> @@ -4075,7 +4079,7 @@ ipa_merge_fn_summary_after_inlining (struct cgraph_edge *edge)
>    auto_vec<int, 8> operand_map;
>    auto_vec<HOST_WIDE_INT, 8> offset_map;
>    int i;
> -  predicate toplev_predicate;
> +  ipa_predicate toplev_predicate;
>    class ipa_call_summary *es = ipa_call_summaries->get (edge);
>    ipa_node_params *params_summary = (ipa_node_params_sum
>  				     ? ipa_node_params_sum->get (to) : NULL);
> @@ -4139,13 +4143,13 @@ ipa_merge_fn_summary_after_inlining (struct cgraph_edge *edge)
>    sreal freq = edge->sreal_frequency ();
>    for (i = 0; callee_info->size_time_table.iterate (i, &e); i++)
>      {
> -      predicate p;
> +      ipa_predicate p;
>        p = e->exec_predicate.remap_after_inlining
>  			     (info, params_summary,
>  			      callee_info, operand_map,
>  			      offset_map, clause,
>  			      toplev_predicate);
> -      predicate nonconstp;
> +      ipa_predicate nonconstp;
>        nonconstp = e->nonconst_predicate.remap_after_inlining
>  				     (info, params_summary,
>  				      callee_info, operand_map,
> @@ -4230,7 +4234,7 @@ ipa_update_overall_fn_summary (struct cgraph_node *node, bool reset)
>    if (node->callees || node->indirect_calls)
>      estimate_calls_size_and_time (node, &size_info->size, &info->min_size,
>  				  &info->time, NULL,
> -				  ~(clause_t) (1 << predicate::false_condition),
> +				  ~(clause_t) (1 << ipa_predicate::false_condition),
>  				  NULL);
>    size_info->size = RDIV (size_info->size, ipa_fn_summary::size_scale);
>    info->min_size = RDIV (info->min_size, ipa_fn_summary::size_scale);
> @@ -4318,7 +4322,7 @@ read_ipa_call_summary (class lto_input_block *ib, struct cgraph_edge *e,
>  {
>    class ipa_call_summary *es = prevails
>  				? ipa_call_summaries->get_create (e) : NULL;
> -  predicate p;
> +  ipa_predicate p;
>    int length, i;
>    int size = streamer_read_uhwi (ib);
> @@ -4399,7 +4403,7 @@ inline_read_section (struct lto_file_decl_data *file_data, const char *data,
>        lto_symtab_encoder_t encoder;
>        struct bitpack_d bp;
>        struct cgraph_edge *e;
> -      predicate p;
> +      ipa_predicate p;
>        index = streamer_read_uhwi (&ib);
>        encoder = file_data->symtab_node_encoder;
> diff --git a/gcc/ipa-fnsummary.h b/gcc/ipa-fnsummary.h
> index 78399b0b9bb..fdfbd660e70 100644
> --- a/gcc/ipa-fnsummary.h
> +++ b/gcc/ipa-fnsummary.h
> @@ -76,11 +76,11 @@ class size_time_entry
>  {
>  public:
>    /* Predicate for code to be executed.  */
> -  predicate exec_predicate;
> +  ipa_predicate exec_predicate;
>    /* Predicate for value to be constant and optimized out in a specialized copy.
>       When deciding on specialization this makes it possible to see how much
>       the executed code paths will simplify.  */
> -  predicate nonconst_predicate;
> +  ipa_predicate nonconst_predicate;
>    int size;
>    sreal time;
>  };
> @@ -114,7 +114,7 @@ struct GTY(()) ipa_freqcounting_predicate
>    /* The described event happens with this frequency... */
>    sreal freq;
>    /* ...when this predicate evaluates to false. */
> -  class predicate * GTY((skip)) predicate;
> +  ipa_predicate * GTY((skip)) predicate;
>  };
>  /* Function inlining information.  */
> @@ -203,7 +203,8 @@ public:
>    int scc_no;
>    /* Record time and size under given predicates.  */
> -  void account_size_time (int, sreal, const predicate &, const predicate &,
> +  void account_size_time (int, sreal, const ipa_predicate &,
> +			  const ipa_predicate &,
>  		  	  bool call = false);
>    /* We keep values scaled up, so fractional sizes can be accounted.  */
> @@ -286,7 +287,7 @@ public:
>    /* Default destructor.  */
>    ~ipa_call_summary ();
> -  class predicate *predicate;
> +  ipa_predicate *predicate;
>    /* Vector indexed by parameters.  */
>    vec<inline_param_summary> param;
>    /* Estimated size and time of the call statement.  */
> diff --git a/gcc/ipa-predicate.c b/gcc/ipa-predicate.c
> index e4b11ec3ae3..48318cc6091 100644
> --- a/gcc/ipa-predicate.c
> +++ b/gcc/ipa-predicate.c
> @@ -69,7 +69,7 @@ expr_eval_ops_equal_p (expr_eval_ops ops1, expr_eval_ops ops2)
>     sane.  */
>  void
> -predicate::add_clause (conditions conditions, clause_t new_clause)
> +ipa_predicate::add_clause (conditions conditions, clause_t new_clause)
>  {
>    int i;
>    int i2;
> @@ -81,7 +81,7 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
>      return;
>    /* False clause makes the whole predicate false.  Kill the other variants.  */
> -  if (new_clause == (1 << predicate::false_condition))
> +  if (new_clause == (1 << ipa_predicate::false_condition))
>      {
>        *this = false;
>        return;
> @@ -90,7 +90,7 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
>      return;
>    /* No one should be silly enough to add false into nontrivial clauses.  */
> -  gcc_checking_assert (!(new_clause & (1 << predicate::false_condition)));
> +  gcc_checking_assert (!(new_clause & (1 << ipa_predicate::false_condition)));
>    /* Look where to insert the new_clause.  At the same time prune out
>       new_clauses of P that are implied by the new new_clause and thus
> @@ -123,13 +123,13 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
>    /* Look for clauses that are obviously true.  I.e.
>       op0 == 5 || op0 != 5.  */
>    if (conditions)
> -    for (c1 = predicate::first_dynamic_condition;
> +    for (c1 = ipa_predicate::first_dynamic_condition;
>  	 c1 < num_conditions; c1++)
>        {
>  	condition *cc1;
>  	if (!(new_clause & (1 << c1)))
>  	  continue;
> -	cc1 = &(*conditions)[c1 - predicate::first_dynamic_condition];
> +	cc1 = &(*conditions)[c1 - ipa_predicate::first_dynamic_condition];
>  	/* We have no way to represent !changed and !is_not_constant
>  	   and thus there is no point for looking for them.  */
>  	if (cc1->code == changed || cc1->code == is_not_constant)
> @@ -138,7 +138,7 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
>  	  if (new_clause & (1 << c2))
>  	    {
>  	      condition *cc2 =
> -		&(*conditions)[c2 - predicate::first_dynamic_condition];
> +		&(*conditions)[c2 - ipa_predicate::first_dynamic_condition];
>  	      if (cc1->operand_num == cc2->operand_num
>  		  && vrp_operand_equal_p (cc1->val, cc2->val)
>  		  && cc2->code != is_not_constant
> @@ -170,8 +170,8 @@ predicate::add_clause (conditions conditions, clause_t new_clause)
>  /* Do THIS &= P.  */
> -predicate &
> -predicate::operator &= (const predicate &p)
> +ipa_predicate &
> +ipa_predicate::operator &= (const ipa_predicate &p)
>  {
>    /* Avoid busy work.  */
>    if (p == false || *this == true)
> @@ -184,13 +184,13 @@ predicate::operator &= (const predicate &p)
>    int i;
> -  /* See how far predicates match.  */
> +  /* See how far ipa_predicates match.  */
>    for (i = 0; m_clause[i] && m_clause[i] == p.m_clause[i]; i++)
>      {
>        gcc_checking_assert (i < max_clauses);
>      }
> -  /* Combine the predicates rest.  */
> +  /* Combine the ipa_predicates rest.  */
>    for (; p.m_clause[i]; i++)
>      {
>        gcc_checking_assert (i < max_clauses);
> @@ -203,9 +203,9 @@ predicate::operator &= (const predicate &p)
>  /* Return THIS | P2.  */
> -predicate
> -predicate::or_with (conditions conditions,
> -	            const predicate &p) const
> +ipa_predicate
> +ipa_predicate::or_with (conditions conditions,
> +			const ipa_predicate &p) const
>  {
>    /* Avoid busy work.  */
>    if (p == false || *this == true || *this == p)
> @@ -214,7 +214,7 @@ predicate::or_with (conditions conditions,
>      return p;
>    /* OK, combine the predicates.  */
> -  predicate out = true;
> +  ipa_predicate out = true;
>    for (int i = 0; m_clause[i]; i++)
>      for (int j = 0; p.m_clause[j]; j++)
> @@ -230,7 +230,7 @@ predicate::or_with (conditions conditions,
>     if predicate P is known to be false.  */
>  bool
> -predicate::evaluate (clause_t possible_truths) const
> +ipa_predicate::evaluate (clause_t possible_truths) const
>  {
>    int i;
> @@ -238,7 +238,7 @@ predicate::evaluate (clause_t possible_truths) const
>    if (*this == true)
>      return true;
> -  gcc_assert (!(possible_truths & (1 << predicate::false_condition)));
> +  gcc_assert (!(possible_truths & (1 << ipa_predicate::false_condition)));
>    /* See if we can find clause we can disprove.  */
>    for (i = 0; m_clause[i]; i++)
> @@ -254,7 +254,7 @@ predicate::evaluate (clause_t possible_truths) const
>     instruction will be recomputed per invocation of the inlined call.  */
>  int
> -predicate::probability (conditions conds,
> +ipa_predicate::probability (conditions conds,
>  	                clause_t possible_truths,
>  	                vec<inline_param_summary> inline_param_summary) const
>  {
> @@ -268,7 +268,7 @@ predicate::probability (conditions conds,
>    if (*this == false)
>      return 0;
> -  gcc_assert (!(possible_truths & (1 << predicate::false_condition)));
> +  gcc_assert (!(possible_truths & (1 << ipa_predicate::false_condition)));
>    /* See if we can find clause we can disprove.  */
>    for (i = 0; m_clause[i]; i++)
> @@ -285,11 +285,11 @@ predicate::probability (conditions conds,
>  	  for (i2 = 0; i2 < num_conditions; i2++)
>  	    if ((m_clause[i] & possible_truths) & (1 << i2))
>  	      {
> -		if (i2 >= predicate::first_dynamic_condition)
> +		if (i2 >= ipa_predicate::first_dynamic_condition)
>  		  {
>  		    condition *c =
> -		      &(*conds)[i2 - predicate::first_dynamic_condition];
> -		    if (c->code == predicate::changed
> +		      &(*conds)[i2 - ipa_predicate::first_dynamic_condition];
> +		    if (c->code == ipa_predicate::changed
>  			&& (c->operand_num <
>  			    (int) inline_param_summary.length ()))
>  		      {
> @@ -318,13 +318,13 @@ void
>  dump_condition (FILE *f, conditions conditions, int cond)
>  {
>    condition *c;
> -  if (cond == predicate::false_condition)
> +  if (cond == ipa_predicate::false_condition)
>      fprintf (f, "false");
> -  else if (cond == predicate::not_inlined_condition)
> +  else if (cond == ipa_predicate::not_inlined_condition)
>      fprintf (f, "not inlined");
>    else
>      {
> -      c = &(*conditions)[cond - predicate::first_dynamic_condition];
> +      c = &(*conditions)[cond - ipa_predicate::first_dynamic_condition];
>        fprintf (f, "op%i", c->operand_num);
>        if (c->agg_contents)
>  	fprintf (f, "[%soffset: " HOST_WIDE_INT_PRINT_DEC "]",
> @@ -406,12 +406,12 @@ dump_condition (FILE *f, conditions conditions, int cond)
>  	  fprintf (f, ")");
>  	}
> -      if (c->code == predicate::is_not_constant)
> +      if (c->code == ipa_predicate::is_not_constant)
>  	{
>  	  fprintf (f, " not constant");
>  	  return;
>  	}
> -      if (c->code == predicate::changed)
> +      if (c->code == ipa_predicate::changed)
>  	{
>  	  fprintf (f, " changed");
>  	  return;
> @@ -432,7 +432,7 @@ dump_clause (FILE *f, conditions conds, clause_t clause)
>    fprintf (f, "(");
>    if (!clause)
>      fprintf (f, "true");
> -  for (i = 0; i < predicate::num_conditions; i++)
> +  for (i = 0; i < ipa_predicate::num_conditions; i++)
>      if (clause & (1 << i))
>        {
>  	if (found)
> @@ -445,10 +445,10 @@ dump_clause (FILE *f, conditions conds, clause_t clause)
>  /* Dump THIS to F.  CONDS a vector of conditions used when evaluating
> -   predicates.  When NL is true new line is output at the end of dump.  */
> +   ipa_predicates.  When NL is true new line is output at the end of dump.  */
>  void
> -predicate::dump (FILE *f, conditions conds, bool nl) const
> +ipa_predicate::dump (FILE *f, conditions conds, bool nl) const
>  {
>    int i;
>    if (*this == true)
> @@ -466,7 +466,7 @@ predicate::dump (FILE *f, conditions conds, bool nl) const
>  void
> -predicate::debug (conditions conds) const
> +ipa_predicate::debug (conditions conds) const
>  {
>    dump (stderr, conds);
>  }
> @@ -476,11 +476,11 @@ predicate::debug (conditions conds) const
>     POSSIBLE_TRUTHS is clause of possible truths in the duplicated node,
>     INFO is inline summary of the duplicated node.  */
> -predicate
> -predicate::remap_after_duplication (clause_t possible_truths)
> +ipa_predicate
> +ipa_predicate::remap_after_duplication (clause_t possible_truths)
>  {
>    int j;
> -  predicate out = true;
> +  ipa_predicate out = true;
>    for (j = 0; m_clause[j]; j++)
>      if (!(possible_truths & m_clause[j]))
>        return false;
> @@ -503,26 +503,26 @@ predicate::remap_after_duplication (clause_t possible_truths)
>     because they might not be preserved (and should be considered offset zero
>     for other purposes).  */
> -predicate
> -predicate::remap_after_inlining (class ipa_fn_summary *info,
> +ipa_predicate
> +ipa_predicate::remap_after_inlining (class ipa_fn_summary *info,
>  				 class ipa_node_params *params_summary,
>  				 class ipa_fn_summary *callee_info,
>  				 const vec<int> &operand_map,
>  				 const vec<HOST_WIDE_INT> &offset_map,
>  				 clause_t possible_truths,
> -				 const predicate &toplev_predicate)
> +				 const ipa_predicate &toplev_predicate)
>  {
>    int i;
> -  predicate out = true;
> +  ipa_predicate out = true;
> -  /* True predicate is easy.  */
> +  /* True ipa_predicate is easy.  */
>    if (*this == true)
>      return toplev_predicate;
>    for (i = 0; m_clause[i]; i++)
>      {
>        clause_t clause = m_clause[i];
>        int cond;
> -      predicate clause_predicate = false;
> +      ipa_predicate clause_predicate = false;
>        gcc_assert (i < max_clauses);
> @@ -530,16 +530,15 @@ predicate::remap_after_inlining (class ipa_fn_summary *info,
>  	/* Do we have condition we can't disprove?   */
>  	if (clause & possible_truths & (1 << cond))
>  	  {
> -	    predicate cond_predicate;
> +	    ipa_predicate cond_predicate;
>  	    /* Work out if the condition can translate to predicate in the
>  	       inlined function.  */
> -	    if (cond >= predicate::first_dynamic_condition)
> +	    if (cond >= ipa_predicate::first_dynamic_condition)
>  	      {
>  		struct condition *c;
> -		c = &(*callee_info->conds)[cond
> -					   -
> -					   predicate::first_dynamic_condition];
> +		int index = cond - ipa_predicate::first_dynamic_condition;
> +		c = &(*callee_info->conds)[index];
>  		/* See if we can remap condition operand to caller's operand.
>  		   Otherwise give up.  */
>  		if (!operand_map.exists ()
> @@ -576,7 +575,7 @@ predicate::remap_after_inlining (class ipa_fn_summary *info,
>  	    /* Fixed conditions remains same, construct single
>  	       condition predicate.  */
>  	    else
> -	      cond_predicate = predicate::predicate_testing_cond (cond);
> +	      cond_predicate = ipa_predicate::predicate_testing_cond (cond);
>  	    clause_predicate = clause_predicate.or_with (info->conds,
>  					                 cond_predicate);
>  	  }
> @@ -590,7 +589,7 @@ predicate::remap_after_inlining (class ipa_fn_summary *info,
>  /* Read predicate from IB.  */
>  void
> -predicate::stream_in (class lto_input_block *ib)
> +ipa_predicate::stream_in (class lto_input_block *ib)
>  {
>    clause_t clause;
>    int k = 0;
> @@ -611,7 +610,7 @@ predicate::stream_in (class lto_input_block *ib)
>  /* Write predicate P to OB.  */
>  void
> -predicate::stream_out (struct output_block *ob)
> +ipa_predicate::stream_out (struct output_block *ob)
>  {
>    int j;
>    for (j = 0; m_clause[j]; j++)
> @@ -629,7 +628,7 @@ predicate::stream_out (struct output_block *ob)
>     aggregate it is.  It can be NULL, which means this not a load from an
>     aggregate.  */
> -predicate
> +ipa_predicate
>  add_condition (class ipa_fn_summary *summary,
>  	       class ipa_node_params *params_summary,
>  	       int operand_num,
> @@ -669,10 +668,10 @@ add_condition (class ipa_fn_summary *summary,
>  	  && c->agg_contents == agg_contents
>  	  && expr_eval_ops_equal_p (c->param_ops, param_ops)
>  	  && (!agg_contents || (c->offset == offset && c->by_ref == by_ref)))
> -	return predicate::predicate_testing_cond (i);
> +	return ipa_predicate::predicate_testing_cond (i);
>      }
>    /* Too many conditions.  Give up and return constant true.  */
> -  if (i == predicate::num_conditions - predicate::first_dynamic_condition)
> +  if (i == ipa_predicate::num_conditions - ipa_predicate::first_dynamic_condition)
>      return true;
>    new_cond.operand_num = operand_num;
> @@ -694,5 +693,5 @@ add_condition (class ipa_fn_summary *summary,
>    vec_safe_push (summary->conds, new_cond);
> -  return predicate::predicate_testing_cond (i);
> +  return ipa_predicate::predicate_testing_cond (i);
>  }
> diff --git a/gcc/ipa-predicate.h b/gcc/ipa-predicate.h
> index ac52b54aa36..190dcedc93f 100644
> --- a/gcc/ipa-predicate.h
> +++ b/gcc/ipa-predicate.h
> @@ -111,7 +111,7 @@ typedef vec<condition, va_gc> *conditions;
>     is not.  */
>  typedef uint32_t clause_t;
> -class predicate
> +class ipa_predicate
>  {
>  public:
>    enum predicate_conditions
> @@ -138,7 +138,7 @@ public:
>    /* Initialize predicate either to true of false depending on P.  */
> -  inline predicate (bool p = true)
> +  inline ipa_predicate (bool p = true)
>      {
>        if (p)
>          /* True predicate.  */
> @@ -149,42 +149,42 @@ public:
>      }
>    /* Sanity check that we do not mix pointers to predicates with predicates.  */
> -  inline predicate (predicate *)
> +  inline ipa_predicate (ipa_predicate *)
>      {
>        gcc_unreachable ();
>      }
>    /* Return predicate testing condition I.  */
> -  static inline predicate predicate_testing_cond (int i)
> +  static inline ipa_predicate predicate_testing_cond (int i)
>      {
> -      class predicate p;
> +      ipa_predicate p;
>        p.set_to_cond (i + first_dynamic_condition);
>        return p;
>      }
>    /* Return predicate testing that function was not inlined.  */
> -  static predicate not_inlined (void)
> +  static ipa_predicate not_inlined (void)
>      {
> -      class predicate p;
> +      ipa_predicate p;
>        p.set_to_cond (not_inlined_condition);
>        return p;
>      }
> -  /* Compute logical and of predicates.  */
> -  predicate & operator &= (const predicate &);
> -  inline predicate operator &(const predicate &p) const
> +  /* Compute logical and of ipa_predicates.  */
> +  ipa_predicate & operator &= (const ipa_predicate &);
> +  inline ipa_predicate operator &(const ipa_predicate &p) const
>      {
> -      predicate ret = *this;
> +      ipa_predicate ret = *this;
>        ret &= p;
>        return ret;
>      }
> -  /* Compute logical or of predicates.  This is not operator because
> +  /* Compute logical or of ipa_predicates.  This is not operator because
>       extra parameter CONDITIONS is needed  */
> -  predicate or_with (conditions, const predicate &) const;
> +  ipa_predicate or_with (conditions, const ipa_predicate &) const;
> -  /* Return true if predicates are known to be equal.  */
> -  inline bool operator==(const predicate &p2) const
> +  /* Return true if ipa_predicates are known to be equal.  */
> +  inline bool operator==(const ipa_predicate &p2) const
>      {
>        int i;
>        for (i = 0; m_clause[i]; i++)
> @@ -215,7 +215,7 @@ public:
>        return false;
>      }
> -  inline bool operator!=(const predicate &p2) const
> +  inline bool operator!=(const ipa_predicate &p2) const
>      {
>        return !(*this == p2);
>      }
> @@ -236,18 +236,19 @@ public:
>    void dump (FILE *f, conditions, bool nl=true) const;
>    void DEBUG_FUNCTION debug (conditions) const;
> -  /* Return predicate equal to THIS after duplication.  */
> -  predicate remap_after_duplication (clause_t);
> +  /* Return ipa_predicate equal to THIS after duplication.  */
> +  ipa_predicate remap_after_duplication (clause_t);
> -  /* Return predicate equal to THIS after inlining.  */
> -  predicate remap_after_inlining (class ipa_fn_summary *,
> -		  		  class ipa_node_params *params_summary,
> -			          class ipa_fn_summary *,
> -				  const vec<int> &, const vec<HOST_WIDE_INT> &,
> -				  clause_t, const predicate &);
> +  /* Return ipa_predicate equal to THIS after inlining.  */
> +  ipa_predicate remap_after_inlining (class ipa_fn_summary *,
> +				      ipa_node_params *params_summary,
> +				      ipa_fn_summary *,
> +				      const vec<int> &,
> +				      const vec<HOST_WIDE_INT> &,
> +				      clause_t, const ipa_predicate &);
> -  void stream_in (class lto_input_block *);
> -  void stream_out (struct output_block *);
> +  void stream_in (lto_input_block *);
> +  void stream_out (output_block *);
>  private:
>    static const int max_clauses = 8;
> @@ -264,9 +265,9 @@ private:
>  };
>  void dump_condition (FILE *f, conditions conditions, int cond);
> -predicate add_condition (class ipa_fn_summary *summary,
> -			 class ipa_node_params *params_summary,
> -	       		 int operand_num,
> -			 tree type, struct agg_position_info *aggpos,
> -			 enum tree_code code, tree val,
> -			 expr_eval_ops param_ops = NULL);
> +ipa_predicate add_condition (ipa_fn_summary *summary,
> +			     ipa_node_params *params_summary,
> +			     int operand_num,
> +			     tree type, struct agg_position_info *aggpos,
> +			     enum tree_code code, tree val,
> +			     expr_eval_ops param_ops = NULL);
> -- 
> 2.33.1
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Rename predicate class to ipa_predicate
  2021-11-03 12:59 ` Jan Hubicka
@ 2021-11-03 13:01   ` Martin Liška
  0 siblings, 0 replies; 4+ messages in thread
From: Martin Liška @ 2021-11-03 13:01 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, Martin Sebor

On 11/3/21 13:59, Jan Hubicka wrote:
> OK (even thought the predicates are not necessarily limited to IPA
> passes:).

Heh ;) Thanks and installed.

Martin

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Rename predicate class to ipa_predicate
  2021-11-03 10:23 [PATCH] Rename predicate class to ipa_predicate Martin Liška
  2021-11-03 12:59 ` Jan Hubicka
@ 2021-11-03 16:29 ` Martin Sebor
  1 sibling, 0 replies; 4+ messages in thread
From: Martin Sebor @ 2021-11-03 16:29 UTC (permalink / raw)
  To: Martin Liška, gcc-patches; +Cc: Jan Hubicka

On 11/3/21 4:23 AM, Martin Liška wrote:
> Hello.
> 
> The renaming patch fixes a -Wodr warning seen and reported in the PR.
> 
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Thanks for handling this!

Martin

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-11-03 16:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-03 10:23 [PATCH] Rename predicate class to ipa_predicate Martin Liška
2021-11-03 12:59 ` Jan Hubicka
2021-11-03 13:01   ` Martin Liška
2021-11-03 16:29 ` Martin Sebor

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