diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2022-06-16 12:44:33 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2022-06-16 14:16:19 -0400 |
commit | 6c849e2fab3f682b715a81cb4ccc792f20c00eeb (patch) | |
tree | 380e12d8d882a331c72e8962d1c04732d5247cc8 /gcc/gimple-range-cache.cc | |
parent | 5b1594dc2d053803ae98ae39f76fbd71f35cb657 (diff) | |
download | gcc-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.cc | 7 |
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); + } } } } |