aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2024-06-19 11:42:16 +0200
committerAldy Hernandez <aldyh@redhat.com>2024-06-27 11:09:20 +0200
commitbcdbb85f26aa0d25645d51ddf728a049b201c980 (patch)
treec2bbcb50a088d059430f4700bb999a4a4bb98da3
parentdafa750c8a6f0a088677871bfaad054881737ab1 (diff)
downloadgcc-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.cc6
-rw-r--r--gcc/gimple-range-cache.h9
-rw-r--r--gcc/gimple-range.cc4
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);
}
// ------------------------------------------------------------------------