[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