diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2021-05-19 18:44:08 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2021-05-26 21:31:27 +0200 |
commit | 45f4e2b01b82c72b3a11ff4ad184d7edcf0e63d4 (patch) | |
tree | 4ded2cb7fa2fbf922e5258cee4d0202c511ca68a /gcc/tree-vect-patterns.c | |
parent | fe9a499cb8775cfbcea356ab0cae5c365971cf86 (diff) | |
download | gcc-45f4e2b01b82c72b3a11ff4ad184d7edcf0e63d4.zip gcc-45f4e2b01b82c72b3a11ff4ad184d7edcf0e63d4.tar.gz gcc-45f4e2b01b82c72b3a11ff4ad184d7edcf0e63d4.tar.bz2 |
Convert remaining passes to get_range_query.
This patch converts the remaining users of get_range_info and
get_ptr_nonnull to the get_range_query API.
No effort was made to move passes away from VR_ANTI_RANGE, or any other
use of deprecated methods. This was a straight up conversion to the new
API, nothing else.
gcc/ChangeLog:
* builtins.c (check_nul_terminated_array): Convert to get_range_query.
(expand_builtin_strnlen): Same.
(determine_block_size): Same.
* fold-const.c (expr_not_equal_to): Same.
* gimple-fold.c (size_must_be_zero_p): Same.
* gimple-match-head.c: Include gimple-range.h.
* gimple-pretty-print.c (dump_ssaname_info): Convert to get_range_query.
* gimple-ssa-warn-restrict.c
(builtin_memref::extend_offset_range): Same.
* graphite-sese-to-poly.c (add_param_constraints): Same.
* internal-fn.c (get_min_precision): Same.
* ipa-fnsummary.c (set_switch_stmt_execution_predicate): Same.
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Same.
* match.pd: Same.
* tree-data-ref.c (split_constant_offset): Same.
(dr_step_indicator): Same.
* tree-dfa.c (get_ref_base_and_extent): Same.
* tree-scalar-evolution.c (iv_can_overflow_p): Same.
* tree-ssa-loop-niter.c (refine_value_range_using_guard): Same.
(determine_value_range): Same.
(record_nonwrapping_iv): Same.
(infer_loop_bounds_from_signedness): Same.
(scev_var_range_cant_overflow): Same.
* tree-ssa-phiopt.c (two_value_replacement): Same.
* tree-ssa-pre.c (insert_into_preds_of_block): Same.
* tree-ssa-reassoc.c (optimize_range_tests_to_bit_test): Same.
* tree-ssa-strlen.c (handle_builtin_stxncpy_strncat): Same.
(get_range): Same.
(dump_strlen_info): Same.
(set_strlen_range): Same.
(maybe_diag_stxncpy_trunc): Same.
(get_len_or_size): Same.
(handle_integral_assign): Same.
* tree-ssa-structalias.c (find_what_p_points_to): Same.
* tree-ssa-uninit.c (find_var_cmp_const): Same.
* tree-switch-conversion.c (bit_test_cluster::emit): Same.
* tree-vect-patterns.c (vect_get_range_info): Same.
(vect_recog_divmod_pattern): Same.
* tree-vrp.c (intersect_range_with_nonzero_bits): Same.
(register_edge_assert_for_2): Same.
(determine_value_range_1): Same.
* tree.c (get_range_pos_neg): Same.
* vr-values.c (vr_values::get_lattice_entry): Same.
(vr_values::update_value_range): Same.
(simplify_conversion_using_ranges): Same.
Diffstat (limited to 'gcc/tree-vect-patterns.c')
-rw-r--r-- | gcc/tree-vect-patterns.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 803de3f..177d44e 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see #include "predict.h" #include "tree-vector-builder.h" #include "vec-perm-indices.h" +#include "gimple-range.h" /* Return true if we have a useful VR_RANGE range for VAR, storing it in *MIN_VALUE and *MAX_VALUE if so. Note the range in the dump files. */ @@ -55,7 +56,13 @@ along with GCC; see the file COPYING3. If not see static bool vect_get_range_info (tree var, wide_int *min_value, wide_int *max_value) { - value_range_kind vr_type = get_range_info (var, min_value, max_value); + value_range vr; + get_range_query (cfun)->range_of_expr (vr, var); + if (vr.undefined_p ()) + vr.set_varying (TREE_TYPE (var)); + *min_value = wi::to_wide (vr.min ()); + *max_value = wi::to_wide (vr.max ()); + value_range_kind vr_type = vr.kind (); wide_int nonzero = get_nonzero_bits (var); signop sgn = TYPE_SIGN (TREE_TYPE (var)); if (intersect_range_with_nonzero_bits (vr_type, min_value, max_value, @@ -3437,13 +3444,14 @@ vect_recog_divmod_pattern (vec_info *vinfo, else t3 = t2; - wide_int oprnd0_min, oprnd0_max; int msb = 1; - if (get_range_info (oprnd0, &oprnd0_min, &oprnd0_max) == VR_RANGE) + value_range r; + get_range_query (cfun)->range_of_expr (r, oprnd0); + if (r.kind () == VR_RANGE) { - if (!wi::neg_p (oprnd0_min, TYPE_SIGN (itype))) + if (!wi::neg_p (r.lower_bound (), TYPE_SIGN (itype))) msb = 0; - else if (wi::neg_p (oprnd0_max, TYPE_SIGN (itype))) + else if (wi::neg_p (r.upper_bound (), TYPE_SIGN (itype))) msb = -1; } |