aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-edge.h
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2022-05-22 20:17:39 +0200
committerAldy Hernandez <aldyh@redhat.com>2022-06-01 11:09:32 +0200
commitd8474337a0b2bf1b3c84863957cef1da92811ffe (patch)
tree9362ae8a8d6e626b9ae8b9519b2720a79e840b68 /gcc/gimple-range-edge.h
parentcf5bea76f9d84f6218f0a5085db63a50aed9d95a (diff)
downloadgcc-d8474337a0b2bf1b3c84863957cef1da92811ffe.zip
gcc-d8474337a0b2bf1b3c84863957cef1da92811ffe.tar.gz
gcc-d8474337a0b2bf1b3c84863957cef1da92811ffe.tar.bz2
Revamp irange_allocator to handle vranges.
This patch revamps the range allocator to handle generic vrange's. I've cleaned it up somehow to make it obvious the various things you can allocate with it. I've also moved away from overloads into distinct names when appropriate. The various entry points are now: // Allocate a range of TYPE. vrange *alloc_vrange (tree type); // Allocate a memory block of BYTES. void *alloc (unsigned bytes); // Return a clone of SRC. template <typename T> T *clone (const T &src); It is now possible to allocate a clone of an irange, or any future range types: irange *i = allocator.clone <irange> (some_irange); frange *f = allocator.clone <frange> (some_frange); You can actually do so without the <>, but I find it clearer to specify the vrange type. So with it you can allocate a specific range type, or vrange, or a block of memory. I have rewritten the C style casts to C++ casts, since casts tend to be hints of problematic designs. With the C++ casts you can at least grep for them easier. Speak of which, the next patch, which converts ranger to vrange, will further clean this space by removing some unnecessary casts. Tested on x86-64 Linux and ppc64le Linux. * gimple-range-cache.cc (sbr_vector::sbr_vector): Adjust for vrange allocator. (sbr_vector::grow): Same. (sbr_vector::set_bb_range): Same. (sbr_sparse_bitmap::sbr_sparse_bitmap): Same. (sbr_sparse_bitmap::set_bb_range): Same. (block_range_cache::~block_range_cache): Same. (block_range_cache::set_bb_range): Same. (ssa_global_cache::ssa_global_cache): Same. (ssa_global_cache::~ssa_global_cache): Same. (ssa_global_cache::set_global_range): Same. * gimple-range-cache.h (block_range_cache): Same. (ssa_global_cache): Same. * gimple-range-edge.cc (gimple_outgoing_range::calc_switch_ranges): Same. * gimple-range-edge.h (gimple_outgoing_range): Same. * gimple-range-infer.cc (infer_range_manager::get_nonzero): Same. (infer_range_manager::add_range): Same. * gimple-range-infer.h (class infer_range_manager): Same. * value-range.h (class irange_allocator): Rename to... (class vrange_allocator): ...this. (irange_allocator::irange_allocator): New. (vrange_allocator::vrange_allocator): New. (irange_allocator::~irange_allocator): New. (vrange_allocator::~vrange_allocator): New. (irange_allocator::get_memory): Rename to... (vrange_allocator::alloc): ...this. (vrange_allocator::alloc_vrange): Rename from... (irange_allocator::allocate): ...this. (vrange_allocator::alloc_irange): New.
Diffstat (limited to 'gcc/gimple-range-edge.h')
-rw-r--r--gcc/gimple-range-edge.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/gimple-range-edge.h b/gcc/gimple-range-edge.h
index c131b33..ce383b0 100644
--- a/gcc/gimple-range-edge.h
+++ b/gcc/gimple-range-edge.h
@@ -47,7 +47,7 @@ private:
int m_max_edges;
hash_map<edge, irange *> *m_edge_table;
- irange_allocator m_range_allocator;
+ vrange_allocator m_range_allocator;
};
// If there is a range control statement at the end of block BB, return it.