aboutsummaryrefslogtreecommitdiff
path: root/gcc/vr-values.c
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@redhat.com>2021-05-18 20:33:09 -0400
committerAndrew MacLeod <amacleod@redhat.com>2021-05-19 16:22:13 -0400
commitdc6758f03effbf7d6946d8c314576c7a6c0003af (patch)
tree5d56151f75df24c220ad5f0908dd195781553f9b /gcc/vr-values.c
parentcd67343703ef4fa61de837f4690eba70d2760825 (diff)
downloadgcc-dc6758f03effbf7d6946d8c314576c7a6c0003af.zip
gcc-dc6758f03effbf7d6946d8c314576c7a6c0003af.tar.gz
gcc-dc6758f03effbf7d6946d8c314576c7a6c0003af.tar.bz2
Split gimple range folding with ranges into a stand alone class.
Introduces fold_using_range which folds any kind of gimple statement by querying argument ranges thru a generic range_query. This pulls all the statement processing into a client neutral location. * gimple-range.cc (fur_source::get_operand): New. (gimple_range_fold): Delete. (fold_using_range::fold_stmt): Move from gimple_ranger::calc_stmt. (fold_using_range::range_of_range_op): Move from gimple_ranger. (fold_using_range::range_of_address): Ditto. (fold_using_range::range_of_phi): Ditto. (fold_using_range::range_of_call): Ditto. (fold_using_range::range_of_builtin_ubsan_call): Move from range_of_builtin_ubsan_call. (fold_using_range::range_of_builtin_call): Move from range_of_builtin_call. (gimple_ranger::range_of_builtin_call): Delete. (fold_using_range::range_of_cond_expr): Move from gimple_ranger. (gimple_ranger::fold_range_internal): New. (gimple_ranger::range_of_stmt): Use new fold_using_range API. (fold_using_range::range_of_ssa_name_with_loop_info): Move from gimple_ranger. Improve ranges of SSA_NAMES when possible. * gimple-range.h (gimple_ranger): Remove various range_of routines. (class fur_source): New. (class fold_using_range): New. (fur_source::fur_source): New. (fold_range): New. * vr-values.c (vr_values::extract_range_basic): Use fold_using_range instead of range_of_builtin_call.
Diffstat (limited to 'gcc/vr-values.c')
-rw-r--r--gcc/vr-values.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index b1bf53a..02bc0db 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -1229,7 +1229,7 @@ vr_values::extract_range_basic (value_range_equiv *vr, gimple *stmt)
return;
break;
default:
- if (range_of_builtin_call (*this, *vr, as_a<gcall *> (stmt)))
+ if (fold_range (*vr, stmt, this))
{
/* The original code nuked equivalences every time a
range was found, so do the same here. */