diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2023-05-23 15:41:03 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2023-05-24 08:39:58 -0400 |
commit | 257c2be7ff8dfdc610202a1e1f5a8a668b939bdb (patch) | |
tree | c69a7f0a8973a3993185cccc8d27ef28b85f9a7d /gcc/gimple-range-cache.cc | |
parent | cfd6569e9c41181231a8427235d0c0a7ad9262e4 (diff) | |
download | gcc-257c2be7ff8dfdc610202a1e1f5a8a668b939bdb.zip gcc-257c2be7ff8dfdc610202a1e1f5a8a668b939bdb.tar.gz gcc-257c2be7ff8dfdc610202a1e1f5a8a668b939bdb.tar.bz2 |
Only update global value if it changes.
Do not update and propagate a global value if it hasn't changed.
PR tree-optimization/109695
* gimple-range-cache.cc (ranger_cache::get_global_range): Add
changed param.
* gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
* gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
flag to set_global_range.
(gimple_ranger::prefill_stmt_dependencies): Ditto.
Diffstat (limited to 'gcc/gimple-range-cache.cc')
-rw-r--r-- | gcc/gimple-range-cache.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index db7ee8e..e069241 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -992,10 +992,18 @@ ranger_cache::get_global_range (vrange &r, tree name, bool ¤t_p) // Set the global range of NAME to R and give it a timestamp. void -ranger_cache::set_global_range (tree name, const vrange &r) +ranger_cache::set_global_range (tree name, const vrange &r, bool changed) { // Setting a range always clears the always_current flag. m_temporal->set_always_current (name, false); + if (!changed) + { + // If there are dependencies, make sure this is not out of date. + if (!m_temporal->current_p (name, m_gori.depend1 (name), + m_gori.depend2 (name))) + m_temporal->set_timestamp (name); + return; + } if (m_globals.set_range (name, r)) { // If there was already a range set, propagate the new value. |