aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-range-cache.cc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2022-06-16 12:44:33 -0400
committerAndrew MacLeod <amacleod@redhat.com>2022-06-16 14:16:19 -0400
commit6c849e2fab3f682b715a81cb4ccc792f20c00eeb (patch)
tree380e12d8d882a331c72e8962d1c04732d5247cc8 /gcc/gimple-range-cache.cc
parent5b1594dc2d053803ae98ae39f76fbd71f35cb657 (diff)
downloadgcc-6c849e2fab3f682b715a81cb4ccc792f20c00eeb.zip
gcc-6c849e2fab3f682b715a81cb4ccc792f20c00eeb.tar.gz
gcc-6c849e2fab3f682b715a81cb4ccc792f20c00eeb.tar.bz2
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.
Diffstat (limited to 'gcc/gimple-range-cache.cc')
-rw-r--r--gcc/gimple-range-cache.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc
index f349436..5df7441 100644
--- a/gcc/gimple-range-cache.cc
+++ b/gcc/gimple-range-cache.cc
@@ -1474,7 +1474,12 @@ ranger_cache::apply_inferred_ranges (gimple *s)
if (!m_on_entry.get_bb_range (r, name, bb))
exit_range (r, name, bb, RFD_READ_ONLY);
if (r.intersect (infer.range (x)))
- m_on_entry.set_bb_range (name, bb, r);
+ {
+ m_on_entry.set_bb_range (name, bb, r);
+ // If this range was invariant before, remove invariance.
+ if (!m_gori.has_edge_range_p (name))
+ m_gori.set_range_invariant (name, false);
+ }
}
}
}