public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/aldyh/heads/ranger-staging)] evrp_range_analyzer now inherits from vr_values instead of having one.
@ 2020-09-16  3:39 Andrew Macleod
  0 siblings, 0 replies; only message in thread
From: Andrew Macleod @ 2020-09-16  3:39 UTC (permalink / raw)
  To: gcc-cvs

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

commit ab56481a23ca4f08d0a129f909a19dc2c93dc40b
Author: Andrew MacLeod <amacleod@redhat.com>
Date:   Mon Sep 14 13:26:22 2020 -0400

    evrp_range_analyzer now inherits from vr_values instead of having one.

Diff:
---
 gcc/gimple-loop-versioning.cc |  3 +--
 gcc/gimple-ssa-evrp-analyze.c | 31 ++++++++++++++-----------------
 gcc/gimple-ssa-evrp-analyze.h | 21 ++-------------------
 gcc/gimple-ssa-evrp.c         | 15 ++++++---------
 gcc/tree-ssa-dom.c            |  4 ++--
 gcc/tree-ssa-strlen.c         |  2 +-
 gcc/tree-ssa-threadedge.c     |  6 +++---
 7 files changed, 29 insertions(+), 53 deletions(-)

diff --git a/gcc/gimple-loop-versioning.cc b/gcc/gimple-loop-versioning.cc
index 7cbaf854aea..ca4bbfe9380 100644
--- a/gcc/gimple-loop-versioning.cc
+++ b/gcc/gimple-loop-versioning.cc
@@ -523,8 +523,7 @@ loop_versioning::lv_dom_walker::before_dom_children (basic_block bb)
   m_range_analyzer.enter (bb);
 
   if (bb == bb->loop_father->header)
-    m_lv.prune_loop_conditions (bb->loop_father,
-				m_range_analyzer.get_vr_values ());
+    m_lv.prune_loop_conditions (bb->loop_father, &m_range_analyzer);
 
   for (gimple_stmt_iterator si = gsi_start_bb (bb); !gsi_end_p (si);
        gsi_next (&si))
diff --git a/gcc/gimple-ssa-evrp-analyze.c b/gcc/gimple-ssa-evrp-analyze.c
index 9f8ce5575a2..485774d3f22 100644
--- a/gcc/gimple-ssa-evrp-analyze.c
+++ b/gcc/gimple-ssa-evrp-analyze.c
@@ -54,7 +54,6 @@ evrp_range_analyzer::evrp_range_analyzer (bool update_global_ranges)
       FOR_EACH_EDGE (e, ei, bb->preds)
         e->flags |= EDGE_EXECUTABLE;
     }
-  vr_values = new class vr_values;
 }
 
 /* Push an unwinding marker onto the unwinding stack.  */
@@ -87,15 +86,14 @@ evrp_range_analyzer::try_find_new_range (tree name,
   const value_range_equiv *old_vr = get_value_range (name);
 
   /* Discover VR when condition is true.  */
-  vr_values->extract_range_for_var_from_comparison_expr (name, code, op,
-							 limit, &vr);
+  extract_range_for_var_from_comparison_expr (name, code, op, limit, &vr);
   /* If we found any usable VR, set the VR to ssa_name and create a
      PUSH old value in the stack with the old VR.  */
   if (!vr.undefined_p () && !vr.varying_p ())
     {
       if (old_vr->equal_p (vr, /*ignore_equivs=*/true))
 	return NULL;
-      value_range_equiv *new_vr = vr_values->allocate_value_range_equiv ();
+      value_range_equiv *new_vr = allocate_value_range_equiv ();
       new_vr->move (&vr);
       return new_vr;
     }
@@ -214,7 +212,7 @@ evrp_range_analyzer::record_ranges_from_incoming_edge (basic_block bb)
 	      tem.intersect (vrs[i].second);
 	      if (tem.equal_p (*old_vr))
 		{
-		  vr_values->free_value_range (vrs[i].second);
+		  free_value_range (vrs[i].second);
 		  continue;
 		}
 	      push_value_range (vrs[i].first, vrs[i].second);
@@ -261,7 +259,7 @@ evrp_range_analyzer::record_ranges_from_phis (basic_block bb)
       value_range_equiv vr_result;
       bool interesting = stmt_interesting_for_vrp (phi);
       if (!has_unvisited_preds && interesting)
-	vr_values->extract_range_from_phi_node (phi, &vr_result);
+	extract_range_from_phi_node (phi, &vr_result);
       else
 	{
 	  vr_result.set_varying (TREE_TYPE (lhs));
@@ -274,9 +272,9 @@ evrp_range_analyzer::record_ranges_from_phis (basic_block bb)
 	      && interesting
 	      && (l = loop_containing_stmt (phi))
 	      && l->header == gimple_bb (phi))
-	  vr_values->adjust_range_with_scev (&vr_result, l, phi, lhs);
+	  adjust_range_with_scev (&vr_result, l, phi, lhs);
 	}
-      vr_values->update_value_range (lhs, &vr_result);
+      update_value_range (lhs, &vr_result);
 
       /* Set the SSA with the value range.  */
       if (m_update_global_ranges)
@@ -303,7 +301,7 @@ evrp_range_analyzer::record_ranges_from_stmt (gimple *stmt, bool temporary)
     {
       edge taken_edge;
       value_range_equiv vr;
-      vr_values->extract_range_from_stmt (stmt, &taken_edge, &output, &vr);
+      extract_range_from_stmt (stmt, &taken_edge, &output, &vr);
       if (output)
 	{
 	  /* Set the SSA with the value range.  There are two cases to
@@ -321,7 +319,7 @@ evrp_range_analyzer::record_ranges_from_stmt (gimple *stmt, bool temporary)
 	    {
 	      /* Case one.  We can just update the underlying range
 		 information as well as the global information.  */
-	      vr_values->update_value_range (output, &vr);
+	      update_value_range (output, &vr);
 	      if (m_update_global_ranges)
 		set_ssa_range_info (output, &vr);
 	    }
@@ -332,18 +330,17 @@ evrp_range_analyzer::record_ranges_from_stmt (gimple *stmt, bool temporary)
 		 a new range and push the old range onto the stack.  We
 		 also have to be very careful about sharing the underlying
 		 bitmaps.  Ugh.  */
-	      value_range_equiv *new_vr
-		= vr_values->allocate_value_range_equiv ();
+	      value_range_equiv *new_vr = allocate_value_range_equiv ();
 	      new_vr->set (vr.min (), vr.max (), NULL, vr.kind ());
 	      vr.equiv_clear ();
 	      push_value_range (output, new_vr);
 	    }
 	}
       else
-	vr_values->set_defs_to_varying (stmt);
+	set_defs_to_varying (stmt);
     }
   else
-    vr_values->set_defs_to_varying (stmt);
+    set_defs_to_varying (stmt);
 
   /* See if we can derive a range for any of STMT's operands.  */
   tree op;
@@ -429,7 +426,7 @@ evrp_range_analyzer::push_value_range (tree var, value_range_equiv *vr)
       dump_value_range (dump_file, vr);
       fprintf (dump_file, "\n");
     }
-  value_range_equiv *old_vr = vr_values->swap_vr_value (var, vr);
+  value_range_equiv *old_vr = swap_vr_value (var, vr);
   stack.safe_push (std::make_pair (var, old_vr));
 }
 
@@ -451,7 +448,7 @@ evrp_range_analyzer::pop_value_range ()
     }
   /* We saved off a lattice entry, now give it back and release
      the one we popped.  */
-  value_range_equiv *popped_vr = vr_values->swap_vr_value (var, vr);
+  value_range_equiv *popped_vr = swap_vr_value (var, vr);
   if (popped_vr)
-    vr_values->free_value_range (popped_vr);
+    free_value_range (popped_vr);
 }
diff --git a/gcc/gimple-ssa-evrp-analyze.h b/gcc/gimple-ssa-evrp-analyze.h
index 8abbbe3180d..c6d27f5c109 100644
--- a/gcc/gimple-ssa-evrp-analyze.h
+++ b/gcc/gimple-ssa-evrp-analyze.h
@@ -20,13 +20,12 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_GIMPLE_SSA_EVRP_ANALYZE_H
 #define GCC_GIMPLE_SSA_EVRP_ANALYZE_H
 
-class evrp_range_analyzer
+class evrp_range_analyzer : public vr_values
 {
  public:
   evrp_range_analyzer (bool update_global_ranges);
   ~evrp_range_analyzer (void)
   {
-    delete vr_values;
     stack.release ();
   }
 
@@ -36,34 +35,18 @@ class evrp_range_analyzer
   void leave (basic_block);
   void record_ranges_from_stmt (gimple *, bool);
 
-  /* Main interface to retrieve range information.  */
-  const value_range_equiv *get_value_range (const_tree op)
-    { return vr_values->get_value_range (op); }
-
   /* Record a new unwindable range.  */
   void push_value_range (tree var, value_range_equiv *vr);
 
-  /* Dump all the current value ranges.  This is primarily
-     a debugging interface.  */
-  void dump_all_value_ranges (FILE *fp)
-    { vr_values->dump_all_value_ranges (fp); }
-
   /* A bit of a wart.  This should ideally go away.  */
   void vrp_visit_cond_stmt (gcond *cond, edge *e)
   {
-    simplify_using_ranges simpl (vr_values);
+    simplify_using_ranges simpl (this);
     simpl.vrp_visit_cond_stmt (cond, e);
   }
 
-  /* Get the underlying vr_values class instance.  If TRANSFER is
-     true, then we are transferring ownership.  Else we keep ownership.
-
-     This should be converted to a unique_ptr.  */
-  class vr_values *get_vr_values (void) { return vr_values; }
-
  private:
   DISABLE_COPY_AND_ASSIGN (evrp_range_analyzer);
-  class vr_values *vr_values;
 
   void pop_value_range ();
   value_range_equiv *try_find_new_range (tree, tree op, tree_code code,
diff --git a/gcc/gimple-ssa-evrp.c b/gcc/gimple-ssa-evrp.c
index 3414c07b498..27439b2a4c5 100644
--- a/gcc/gimple-ssa-evrp.c
+++ b/gcc/gimple-ssa-evrp.c
@@ -50,10 +50,9 @@ public:
   evrp_folder () :
     substitute_and_fold_engine (),
     m_range_analyzer (/*update_global_ranges=*/true),
-    m_vr_values (m_range_analyzer.get_vr_values ()),
-    simplifier (m_vr_values)
+    simplifier (&m_range_analyzer)
   {
-    set_value_query (m_vr_values);
+    set_value_query (&m_range_analyzer);
   }
 
   ~evrp_folder ()
@@ -95,14 +94,12 @@ public:
 
   void post_new_stmt (gimple *stmt) OVERRIDE
   {
-    m_range_analyzer.get_vr_values ()->set_defs_to_varying (stmt);
+    m_range_analyzer.set_defs_to_varying (stmt);
   }
 
 protected:
   DISABLE_COPY_AND_ASSIGN (evrp_folder);
   class evrp_range_analyzer m_range_analyzer;
-  class vr_values *m_vr_values;
-
   simplify_using_ranges simplifier;
 };
 
@@ -203,7 +200,7 @@ class hybrid_folder : public evrp_folder
 public:
   hybrid_folder () :
     evrp_folder (),
-    m_ranger (m_vr_values),
+    m_ranger (&m_range_analyzer),
     m_evrp_try_first (flag_evrp_mode == EVRP_MODE_EVRP_FIRST)
   {
     // Default to the hybrid evaluator if we should try it first
@@ -224,7 +221,7 @@ public:
   {
     if (m_evrp_try_first)
       {
-	simplifier.set_range_query (m_vr_values);
+	simplifier.set_range_query (&m_range_analyzer);
 	if (simplifier.simplify (gsi))
 	  return true;
 
@@ -242,7 +239,7 @@ public:
     if (simplifier.simplify (gsi))
       return true;
 
-    simplifier.set_range_query (m_vr_values);
+    simplifier.set_range_query (&m_range_analyzer);
     if (simplifier.simplify (gsi))
       {
 	if (dump_file)
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index de5025f3879..c21bfe9f64e 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -1500,7 +1500,7 @@ dom_opt_dom_walker::before_dom_children (basic_block bb)
 void
 dom_opt_dom_walker::after_dom_children (basic_block bb)
 {
-  x_vr_values = evrp_range_analyzer.get_vr_values ();
+  x_vr_values = &evrp_range_analyzer;
   thread_outgoing_edges (bb, m_dummy_cond, m_const_and_copies,
 			 m_avail_exprs_stack,
 			 &evrp_range_analyzer,
@@ -1970,7 +1970,7 @@ dom_opt_dom_walker::optimize_stmt (basic_block bb, gimple_stmt_iterator *si,
   opt_stats.num_stmts++;
 
   /* Const/copy propagate into USES, VUSES and the RHS of VDEFs.  */
-  cprop_into_stmt (stmt, evrp_range_analyzer.get_vr_values ());
+  cprop_into_stmt (stmt, &evrp_range_analyzer);
 
   /* If the statement has been modified with constant replacements,
      fold its RHS before checking for redundant computations.  */
diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
index fcb9f06cd48..8f2413de3ff 100644
--- a/gcc/tree-ssa-strlen.c
+++ b/gcc/tree-ssa-strlen.c
@@ -5863,7 +5863,7 @@ strlen_dom_walker::before_dom_children (basic_block bb)
 	 can be used by printf argument processing.  */
       evrp.record_ranges_from_stmt (stmt, false);
 
-      if (check_and_optimize_stmt (&gsi, &cleanup_eh, evrp.get_vr_values ()))
+      if (check_and_optimize_stmt (&gsi, &cleanup_eh, &evrp))
 	gsi_next (&gsi);
     }
 
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index 03a210846cb..f43d5812270 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -163,8 +163,8 @@ record_temporary_equivalences_from_phis (edge e,
 	{
 	  /* Get an empty new VR we can pass to update_value_range and save
 	     away in the VR stack.  */
-	  vr_values *vr_values = evrp_range_analyzer->get_vr_values ();
-	  value_range_equiv *new_vr = vr_values->allocate_value_range_equiv ();
+	  value_range_equiv *new_vr
+			  = evrp_range_analyzer->allocate_value_range_equiv ();
 	  new (new_vr) value_range_equiv ();
 
 	  /* There are three cases to consider:
@@ -178,7 +178,7 @@ record_temporary_equivalences_from_phis (edge e,
 	       Otherwise set NEW_VR to varying.  This may be overly
 	       conservative.  */
 	  if (TREE_CODE (src) == SSA_NAME)
-	    new_vr->deep_copy (vr_values->get_value_range (src));
+	    new_vr->deep_copy (evrp_range_analyzer->get_value_range (src));
 	  else if (TREE_CODE (src) == INTEGER_CST)
 	    new_vr->set (src);
 	  else


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

only message in thread, other threads:[~2020-09-16  3:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-16  3:39 [gcc(refs/users/aldyh/heads/ranger-staging)] evrp_range_analyzer now inherits from vr_values instead of having one Andrew Macleod

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