diff options
author | Andrew MacLeod <amacleod@redhat.com> | 2023-05-24 09:06:26 -0400 |
---|---|---|
committer | Andrew MacLeod <amacleod@redhat.com> | 2023-05-24 16:40:11 -0400 |
commit | 71baa009496c9ba6e1f71aebb4e96b03c32b3957 (patch) | |
tree | 6806c71e73c85e6846da663bc7c0573f8c9a6815 /gcc/gimple-range-cache.cc | |
parent | 46a594b949082fc47ced0e8278f162ddbe79db1a (diff) | |
download | gcc-71baa009496c9ba6e1f71aebb4e96b03c32b3957.zip gcc-71baa009496c9ba6e1f71aebb4e96b03c32b3957.tar.gz gcc-71baa009496c9ba6e1f71aebb4e96b03c32b3957.tar.bz2 |
Make ssa_cache a range_query.
By providing range_of_expr as a range_query, we can fold and do other
interesting things using values from the global table. Make ranger's
knonw globals available via const_query.
* gimple-range-cache.cc (ssa_cache::range_of_expr): New.
* gimple-range-cache.h (class ssa_cache): Inherit from range_query.
(ranger_cache::const_query): New.
* gimple-range.cc (gimple_ranger::const_query): New.
* gimple-range.h (gimple_ranger::const_query): New prototype.
Diffstat (limited to 'gcc/gimple-range-cache.cc')
-rw-r--r-- | gcc/gimple-range-cache.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index f25abaf..52165d2 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -545,6 +545,20 @@ ssa_cache::~ssa_cache () delete m_range_allocator; } +// Enable a query to evaluate staements/ramnges based on picking up ranges +// from just an ssa-cache. + +bool +ssa_cache::range_of_expr (vrange &r, tree expr, gimple *stmt) +{ + if (!gimple_range_ssa_p (expr)) + return get_tree_range (r, expr, stmt); + + if (!get_range (r, expr)) + gimple_range_global (r, expr, cfun); + return true; +} + // Return TRUE if the global range of NAME has a cache entry. bool |