[gcc(refs/users/aldyh/heads/ranger-staging)] Add value_range_equiv allocator to range_query.

Aldy Hernandez aldyh@gcc.gnu.org
Fri Sep 11 20:29:44 GMT 2020


https://gcc.gnu.org/g:2c485e06a50c577e0f1e4a5527fb4e5fa0199257

commit 2c485e06a50c577e0f1e4a5527fb4e5fa0199257
Author: Aldy Hernandez <aldyh@redhat.com>
Date:   Fri Sep 11 18:43:13 2020 +0200

    Add value_range_equiv allocator to range_query.

Diff:
---
 gcc/value-query.cc | 12 ++++++++++++
 gcc/value-query.h  |  4 ++++
 gcc/vr-values.c    |  6 ++----
 gcc/vr-values.h    |  7 ++-----
 4 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/gcc/value-query.cc b/gcc/value-query.cc
index 90d16b4e4b5..b3c9e205676 100644
--- a/gcc/value-query.cc
+++ b/gcc/value-query.cc
@@ -100,6 +100,18 @@ public:
     : object_allocator<value_range_equiv> ("equiv_allocator pool") { }
 };
 
+value_range_equiv *
+range_query::allocate_value_range_equiv ()
+{
+  return new (equiv_alloc->allocate ()) value_range_equiv;
+}
+
+void
+range_query::free_value_range_equiv (value_range_equiv *v)
+{
+  equiv_alloc->remove (v);
+}
+
 const class value_range_equiv *
 range_query::get_value_range (const_tree expr, gimple *stmt)
 {
diff --git a/gcc/value-query.h b/gcc/value-query.h
index c4fd004f66b..42c8b5816ce 100644
--- a/gcc/value-query.h
+++ b/gcc/value-query.h
@@ -73,6 +73,10 @@ public:
   virtual const class value_range_equiv *get_value_range (const_tree,
 							  gimple * = NULL);
 
+protected:
+  class value_range_equiv *allocate_value_range_equiv ();
+  void free_value_range_equiv (class value_range_equiv *);
+
 private:
   class equiv_allocator *equiv_alloc;
 };
diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index 59714620927..1cd7c506cf4 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -92,7 +92,7 @@ vr_values::get_lattice_entry (const_tree var)
     return vr;
 
   /* Create a default value range.  */
-  vr = new (vrp_value_range_pool.allocate ()) value_range_equiv;
+  vr = allocate_value_range_equiv ();
   vr_value[ver] = vr;
 
   /* After propagation finished return varying.  */
@@ -1979,8 +1979,7 @@ vr_values::dump_all_value_ranges (FILE *file)
 
 /* Initialize VRP lattice.  */
 
-vr_values::vr_values () : vrp_value_range_pool ("Tree VRP value ranges"),
-  simplifier (this)
+vr_values::vr_values () : simplifier (this)
 {
   values_propagated = false;
   num_vr_values = num_ssa_names * 2;
@@ -1997,7 +1996,6 @@ vr_values::~vr_values ()
   free (vr_value);
   free (vr_phi_edge_counts);
   bitmap_obstack_release (&vrp_equiv_obstack);
-  vrp_value_range_pool.release ();
 
   /* So that we can distinguish between VRP data being available
      and not available.  */
diff --git a/gcc/vr-values.h b/gcc/vr-values.h
index 99fe834c28e..7b1718afa03 100644
--- a/gcc/vr-values.h
+++ b/gcc/vr-values.h
@@ -129,9 +129,9 @@ class vr_values : public range_query
 
   /* Allocate a new value_range object.  */
   value_range_equiv *allocate_value_range_equiv (void)
-    { return vrp_value_range_pool.allocate (); }
+    { return range_query::allocate_value_range_equiv (); }
   void free_value_range (value_range_equiv *vr)
-    { vrp_value_range_pool.remove (vr); }
+    { free_value_range_equiv (vr); }
 
  private:
   value_range_equiv *get_lattice_entry (const_tree);
@@ -148,9 +148,6 @@ class vr_values : public range_query
   void vrp_visit_assignment_or_call (gimple*, tree *, value_range_equiv *);
   void vrp_visit_switch_stmt (gswitch *, edge *);
 
-  /* Allocation pools for value_range objects.  */
-  object_allocator<value_range_equiv> vrp_value_range_pool;
-
   /* This probably belongs in the lattice rather than in here.  */
   bool values_propagated;


More information about the Gcc-cvs mailing list