From 6c849e2fab3f682b715a81cb4ccc792f20c00eeb Mon Sep 17 00:00:00 2001 From: Andrew MacLeod Date: Thu, 16 Jun 2022 12:44:33 -0400 Subject: Clear invariant bit for inferred ranges. The range of an invariant SSA (no outgoing edge range anywhere) is not tracked. If an inferred range is registered, remove the invariant flag. * gimple-range-cache.cc (ranger_cache::apply_inferred_ranges): If name was invaraint before, clear the invariant bit. * gimple-range-gori.cc (gori_map::set_range_invariant): Add a flag. * gimple-range-gori.h (gori_map::set_range_invariant): Adjust prototype. --- gcc/gimple-range-gori.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'gcc/gimple-range-gori.cc') diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc index 0a3e54e..a43e44c 100644 --- a/gcc/gimple-range-gori.cc +++ b/gcc/gimple-range-gori.cc @@ -499,12 +499,16 @@ gori_map::is_export_p (tree name, basic_block bb) return bitmap_bit_p (exports (bb), SSA_NAME_VERSION (name)); } -// Clear the m_maybe_variant bit so ranges will not be tracked for NAME. +// Set or clear the m_maybe_variant bit to determine if ranges will be tracked +// for NAME. A clear bit means they will NOT be tracked. void -gori_map::set_range_invariant (tree name) +gori_map::set_range_invariant (tree name, bool invariant) { - bitmap_clear_bit (m_maybe_variant, SSA_NAME_VERSION (name)); + if (invariant) + bitmap_clear_bit (m_maybe_variant, SSA_NAME_VERSION (name)); + else + bitmap_set_bit (m_maybe_variant, SSA_NAME_VERSION (name)); } // Return true if NAME is an import to block BB. -- cgit v1.1