diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-04-29 07:48:43 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-04-29 07:52:23 +0200 |
commit | b1742cc9cae28ee3aad96a7f4510c1d08cd903b2 (patch) | |
tree | 635dfbc7847a5fd949d956e5d248dbe8fa9705e2 | |
parent | 57792146bfc1bead822f2a0f43a5e1ade82e17ab (diff) | |
download | gcc-b1742cc9cae28ee3aad96a7f4510c1d08cd903b2.zip gcc-b1742cc9cae28ee3aad96a7f4510c1d08cd903b2.tar.gz gcc-b1742cc9cae28ee3aad96a7f4510c1d08cd903b2.tar.bz2 |
Use object_allocator to allocate new value_range_equiv entries.
-rw-r--r-- | gcc/gimple-ranger-vrp.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/gimple-ranger-vrp.cc b/gcc/gimple-ranger-vrp.cc index 284862d..411dcac 100644 --- a/gcc/gimple-ranger-vrp.cc +++ b/gcc/gimple-ranger-vrp.cc @@ -44,21 +44,27 @@ along with GCC; see the file COPYING3. If not see #include "gimple-ssa-evrp-analyze.h" #include "gimple-ranger.h" -#define DEBUG_RVRP getenv("DEBUG_RVRP") - class rvrp_ranger : public trace_ranger { public: + rvrp_ranger () : trace_ranger (), range_pool ("rvrp value range pool") { } + ~rvrp_ranger () + { + range_pool.release (); + } // This is the range getter for the simplifier, but is really only // used for the conditional folding which still uses equivalences. virtual const value_range_equiv *get_value_range (const_tree expr, gimple *stmt) { widest_irange r; - if (range_of_expr (r, const_cast<tree> (expr), stmt)) - return new value_range_equiv (r); // FIXME: leaks - return new value_range_equiv (TREE_TYPE (expr)); + value_range_equiv *vr = new (range_pool.allocate ()) value_range_equiv; + if (!range_of_expr (r, const_cast<tree> (expr), stmt)) + vr->set_varying (TREE_TYPE (expr)); + return vr; } +private: + object_allocator<value_range_equiv> range_pool; }; class rvrp_folder : public substitute_and_fold_engine |