diff options
| author | Aldy Hernandez <aldyh@redhat.com> | 2022-07-03 15:25:38 +0200 |
|---|---|---|
| committer | Aldy Hernandez <aldyh@redhat.com> | 2022-07-03 17:33:23 +0200 |
| commit | 3ae9def08565c36af2dc0bff495545ee1e9db642 (patch) | |
| tree | 2dc04b1d77cc6cf291fa183a0c6a74deea50708b /gcc/gimple-range-infer.cc | |
| parent | 17f2e2b77b6610afb8fafd41d0537d3e4429efe0 (diff) | |
| download | gcc-3ae9def08565c36af2dc0bff495545ee1e9db642.zip gcc-3ae9def08565c36af2dc0bff495545ee1e9db642.tar.gz gcc-3ae9def08565c36af2dc0bff495545ee1e9db642.tar.bz2 | |
Move range allocator code to value-range-storage.*
Now that vrange_storage is in its own file, I think it's prudent to
move all the vrange allocator code there since it's all related.
The users of value-range.h do not need to know the implementation
details of the storage facilities.
Tested and benchmarked on x86-64 Linux.
gcc/ChangeLog:
* gimple-range-cache.cc: Include value-range-storage.h.
* gimple-range-cache.h (class block_range_cache): Add "class" to
m_range_allocator.
* gimple-range-edge.cc
(gimple_outgoing_range::gimple_outgoing_range): Allocate allocator.
(gimple_outgoing_range::~gimple_outgoing_range): Free allocator.
(gimple_outgoing_range::calc_switch_ranges): Dereference allocator.
* gimple-range-edge.h: Add "class" to m_range_allocator.
* gimple-range-infer.cc
(infer_range_manager::infer_range_manager): Allocate allocator.
(infer_range_manager::~infer_range_manager): Free allocator.
(infer_range_manager::get_nonzero): Dereference allocator.
(infer_range_manager::add_range): Same.
* gimple-range-infer.h (class vrange_allocator): Add "class" to
m_range_allocator.
* value-range-storage.h (class vrange_allocator): Move from
value-range.h.
(class obstack_vrange_allocator): Same.
(class ggc_vrange_allocator): Same.
(vrange_allocator::alloc_vrange): Same.
(vrange_allocator::alloc_irange): Same.
* value-range.h (class vrange_allocator): Move to value-range-storage.h.
(class obstack_vrange_allocator): Same.
(class ggc_vrange_allocator): Same.
Diffstat (limited to 'gcc/gimple-range-infer.cc')
| -rw-r--r-- | gcc/gimple-range-infer.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/gimple-range-infer.cc b/gcc/gimple-range-infer.cc index eee1491..2d12f86 100644 --- a/gcc/gimple-range-infer.cc +++ b/gcc/gimple-range-infer.cc @@ -28,6 +28,7 @@ along with GCC; see the file COPYING3. If not see #include "ssa.h" #include "gimple-pretty-print.h" #include "gimple-range.h" +#include "value-range-storage.h" #include "tree-cfg.h" #include "target.h" #include "attribs.h" @@ -166,6 +167,7 @@ infer_range_manager::infer_range_manager (bool do_search) // Non-zero elements are very common, so cache them for each ssa-name. m_nonzero.create (0); m_nonzero.safe_grow_cleared (num_ssa_names + 1); + m_range_allocator = new obstack_vrange_allocator; } // Destruct a range infer manager. @@ -176,6 +178,7 @@ infer_range_manager::~infer_range_manager () obstack_free (&m_list_obstack, NULL); m_on_exit.release (); bitmap_obstack_release (&m_bitmaps); + delete m_range_allocator; } // Return a non-zero range value of the appropriate type for NAME from @@ -189,7 +192,7 @@ infer_range_manager::get_nonzero (tree name) m_nonzero.safe_grow_cleared (num_ssa_names + 20); if (!m_nonzero[v]) { - m_nonzero[v] = m_range_allocator.alloc_vrange (TREE_TYPE (name)); + m_nonzero[v] = m_range_allocator->alloc_vrange (TREE_TYPE (name)); m_nonzero[v]->set_nonzero (TREE_TYPE (name)); } return *(m_nonzero[v]); @@ -261,7 +264,7 @@ infer_range_manager::add_range (tree name, basic_block bb, const vrange &r) else { vrange &v = cur; - ptr->range = m_range_allocator.clone (v); + ptr->range = m_range_allocator->clone (v); } return; } @@ -269,7 +272,7 @@ infer_range_manager::add_range (tree name, basic_block bb, const vrange &r) // Otherwise create a record. bitmap_set_bit (m_on_exit[bb->index].m_names, SSA_NAME_VERSION (name)); ptr = (exit_range *)obstack_alloc (&m_list_obstack, sizeof (exit_range)); - ptr->range = m_range_allocator.clone (r); + ptr->range = m_range_allocator->clone (r); ptr->name = name; ptr->next = m_on_exit[bb->index].head; m_on_exit[bb->index].head = ptr; |
