diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2024-06-19 11:42:16 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2024-06-27 11:09:20 +0200 |
commit | bcdbb85f26aa0d25645d51ddf728a049b201c980 (patch) | |
tree | c2bbcb50a088d059430f4700bb999a4a4bb98da3 | |
parent | dafa750c8a6f0a088677871bfaad054881737ab1 (diff) | |
download | gcc-bcdbb85f26aa0d25645d51ddf728a049b201c980.zip gcc-bcdbb85f26aa0d25645d51ddf728a049b201c980.tar.gz gcc-bcdbb85f26aa0d25645d51ddf728a049b201c980.tar.bz2 |
Avoid global bitmap space in ranger.
gcc/ChangeLog:
* gimple-range-cache.cc (update_list::update_list): Add m_bitmaps.
(update_list::~update_list): Initialize m_bitmaps.
* gimple-range-cache.h (ssa_lazy_cache): Add m_bitmaps.
* gimple-range.cc (enable_ranger): Remove global bitmap
initialization.
(disable_ranger): Remove global bitmap release.
-rw-r--r-- | gcc/gimple-range-cache.cc | 6 | ||||
-rw-r--r-- | gcc/gimple-range-cache.h | 9 | ||||
-rw-r--r-- | gcc/gimple-range.cc | 4 |
3 files changed, 11 insertions, 8 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index d84fd1c..6979a14 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -906,6 +906,7 @@ private: vec<int> m_update_list; int m_update_head; bitmap m_propfail; + bitmap_obstack m_bitmaps; }; // Create an update list. @@ -915,7 +916,8 @@ update_list::update_list () m_update_list.create (0); m_update_list.safe_grow_cleared (last_basic_block_for_fn (cfun) + 64); m_update_head = -1; - m_propfail = BITMAP_ALLOC (NULL); + bitmap_obstack_initialize (&m_bitmaps); + m_propfail = BITMAP_ALLOC (&m_bitmaps); } // Destroy an update list. @@ -923,7 +925,7 @@ update_list::update_list () update_list::~update_list () { m_update_list.release (); - BITMAP_FREE (m_propfail); + bitmap_obstack_release (&m_bitmaps); } // Add BB to the list of blocks to update, unless it's already in the list. diff --git a/gcc/gimple-range-cache.h b/gcc/gimple-range-cache.h index 63410d5..0ea34d3 100644 --- a/gcc/gimple-range-cache.h +++ b/gcc/gimple-range-cache.h @@ -78,8 +78,12 @@ protected: class ssa_lazy_cache : public ssa_cache { public: - inline ssa_lazy_cache () { active_p = BITMAP_ALLOC (NULL); } - inline ~ssa_lazy_cache () { BITMAP_FREE (active_p); } + inline ssa_lazy_cache () + { + bitmap_obstack_initialize (&m_bitmaps); + active_p = BITMAP_ALLOC (&m_bitmaps); + } + inline ~ssa_lazy_cache () { bitmap_obstack_release (&m_bitmaps); } inline bool empty_p () const { return bitmap_empty_p (active_p); } virtual bool has_range (tree name) const; virtual bool set_range (tree name, const vrange &r); @@ -89,6 +93,7 @@ public: virtual void clear (); void merge (const ssa_lazy_cache &); protected: + bitmap_obstack m_bitmaps; bitmap active_p; }; diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc index 50448ef..5df649e 100644 --- a/gcc/gimple-range.cc +++ b/gcc/gimple-range.cc @@ -681,8 +681,6 @@ enable_ranger (struct function *fun, bool use_imm_uses) { gimple_ranger *r; - bitmap_obstack_initialize (NULL); - gcc_checking_assert (!fun->x_range_query); r = new gimple_ranger (use_imm_uses); fun->x_range_query = r; @@ -699,8 +697,6 @@ disable_ranger (struct function *fun) gcc_checking_assert (fun->x_range_query); delete fun->x_range_query; fun->x_range_query = NULL; - - bitmap_obstack_release (NULL); } // ------------------------------------------------------------------------ |