From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2136) id 1BEAD385700A; Mon, 1 May 2023 06:33:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1BEAD385700A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1682922823; bh=GjTIwlIBPTr+BwX3wMt23ix33cwXXHwZenX97IxpcIE=; h=From:To:Subject:Date:From; b=UwIBoKtedP/RsVAG5JsZbIL36AT5ZiOmktw94BVr3rM7zwKZCHPhSvzJW6imPQrKa pxJZVrUBM25W0H5/3bPHrqBHlOyuTC4jEP1JLwSFUvc2LimlBHK7gUMzBmhUr98VD7 D+UTvVe64LZ1vdg/oTV+Qg5/8iGiMsdFPwRdMdJQ= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Aldy Hernandez To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-369] Remove irange::{min,max,kind}. X-Act-Checkin: gcc X-Git-Author: Aldy Hernandez X-Git-Refname: refs/heads/master X-Git-Oldrev: e1366a7e4ce1d4dfe43dfa50d451ac45da00975f X-Git-Newrev: e1f83aa39dd5d4dbfd1045786e87bcac0b6561aa Message-Id: <20230501063343.1BEAD385700A@sourceware.org> Date: Mon, 1 May 2023 06:33:43 +0000 (GMT) List-Id: https://gcc.gnu.org/g:e1f83aa39dd5d4dbfd1045786e87bcac0b6561aa commit r14-369-ge1f83aa39dd5d4dbfd1045786e87bcac0b6561aa Author: Aldy Hernandez Date: Tue Jan 24 19:28:59 2023 +0100 Remove irange::{min,max,kind}. gcc/ChangeLog: * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove kind() call. (determine_value_range): Same. (record_nonwrapping_iv): Same. (infer_loop_bounds_from_signedness): Same. (scev_var_range_cant_overflow): Same. * tree-vrp.cc (operand_less_p): Delete. * tree-vrp.h (operand_less_p): Delete. * value-range.cc (get_legacy_range): Remove uses of deprecated API. (irange::value_inside_range): Delete. * value-range.h (vrange::kind): Delete. (irange::num_pairs): Remove check of m_kind. (irange::min): Delete. (irange::max): Delete. Diff: --- gcc/tree-ssa-loop-niter.cc | 26 ++++++++++++++++-------- gcc/tree-vrp.cc | 24 ----------------------- gcc/tree-vrp.h | 1 - gcc/value-range.cc | 49 ---------------------------------------------- gcc/value-range.h | 37 +--------------------------------- 5 files changed, 19 insertions(+), 118 deletions(-) diff --git a/gcc/tree-ssa-loop-niter.cc b/gcc/tree-ssa-loop-niter.cc index 33233979ba0..c0ed6573409 100644 --- a/gcc/tree-ssa-loop-niter.cc +++ b/gcc/tree-ssa-loop-niter.cc @@ -223,7 +223,8 @@ refine_value_range_using_guard (tree type, tree var, else if (TREE_CODE (varc1) == SSA_NAME && INTEGRAL_TYPE_P (type) && get_range_query (cfun)->range_of_expr (r, varc1) - && r.kind () == VR_RANGE) + && !r.undefined_p () + && !r.varying_p ()) { gcc_assert (wi::le_p (r.lower_bound (), r.upper_bound (), sgn)); wi::to_mpz (r.lower_bound (), minc1, sgn); @@ -368,7 +369,10 @@ determine_value_range (class loop *loop, tree type, tree var, mpz_t off, /* Either for VAR itself... */ Value_Range var_range (TREE_TYPE (var)); get_range_query (cfun)->range_of_expr (var_range, var); - rtype = var_range.kind (); + if (var_range.varying_p () || var_range.undefined_p ()) + rtype = VR_VARYING; + else + rtype = VR_RANGE; if (!var_range.undefined_p ()) { minv = var_range.lower_bound (); @@ -384,7 +388,8 @@ determine_value_range (class loop *loop, tree type, tree var, mpz_t off, if (PHI_ARG_DEF_FROM_EDGE (phi, e) == var && get_range_query (cfun)->range_of_expr (phi_range, gimple_phi_result (phi)) - && phi_range.kind () == VR_RANGE) + && !phi_range.varying_p () + && !phi_range.undefined_p ()) { if (rtype != VR_RANGE) { @@ -404,7 +409,10 @@ determine_value_range (class loop *loop, tree type, tree var, mpz_t off, { Value_Range vr (TREE_TYPE (var)); get_range_query (cfun)->range_of_expr (vr, var); - rtype = vr.kind (); + if (vr.varying_p () || vr.undefined_p ()) + rtype = VR_VARYING; + else + rtype = VR_RANGE; if (!vr.undefined_p ()) { minv = vr.lower_bound (); @@ -4045,7 +4053,8 @@ record_nonwrapping_iv (class loop *loop, tree base, tree step, gimple *stmt, if (TREE_CODE (orig_base) == SSA_NAME && TREE_CODE (high) == INTEGER_CST && INTEGRAL_TYPE_P (TREE_TYPE (orig_base)) - && (base_range.kind () == VR_RANGE + && ((!base_range.varying_p () + && !base_range.undefined_p ()) || get_cst_init_from_scev (orig_base, &max, false)) && wi::gts_p (wi::to_wide (high), max)) base = wide_int_to_tree (unsigned_type, max); @@ -4067,7 +4076,8 @@ record_nonwrapping_iv (class loop *loop, tree base, tree step, gimple *stmt, if (TREE_CODE (orig_base) == SSA_NAME && TREE_CODE (low) == INTEGER_CST && INTEGRAL_TYPE_P (TREE_TYPE (orig_base)) - && (base_range.kind () == VR_RANGE + && ((!base_range.varying_p () + && !base_range.undefined_p ()) || get_cst_init_from_scev (orig_base, &min, true)) && wi::gts_p (min, wi::to_wide (low))) base = wide_int_to_tree (unsigned_type, min); @@ -4335,7 +4345,7 @@ infer_loop_bounds_from_signedness (class loop *loop, gimple *stmt) high = upper_bound_in_type (type, type); Value_Range r (TREE_TYPE (def)); get_range_query (cfun)->range_of_expr (r, def); - if (r.kind () == VR_RANGE) + if (!r.varying_p () && !r.undefined_p ()) { low = wide_int_to_tree (type, r.lower_bound ()); high = wide_int_to_tree (type, r.upper_bound ()); @@ -5385,7 +5395,7 @@ scev_var_range_cant_overflow (tree var, tree step, class loop *loop) Value_Range r (TREE_TYPE (var)); get_range_query (cfun)->range_of_expr (r, var); - if (r.kind () != VR_RANGE) + if (r.varying_p () || r.undefined_p ()) return false; /* VAR is a scev whose evolution part is STEP and value range info diff --git a/gcc/tree-vrp.cc b/gcc/tree-vrp.cc index 6c6e0382809..c0dcd50ee01 100644 --- a/gcc/tree-vrp.cc +++ b/gcc/tree-vrp.cc @@ -367,30 +367,6 @@ get_single_symbol (tree t, bool *neg, tree *inv) return t; } -/* Return - 1 if VAL < VAL2 - 0 if !(VAL < VAL2) - -2 if those are incomparable. */ -int -operand_less_p (tree val, tree val2) -{ - /* LT is folded faster than GE and others. Inline the common case. */ - if (TREE_CODE (val) == INTEGER_CST && TREE_CODE (val2) == INTEGER_CST) - return tree_int_cst_lt (val, val2); - else if (TREE_CODE (val) == SSA_NAME && TREE_CODE (val2) == SSA_NAME) - return val == val2 ? 0 : -2; - else - { - int cmp = compare_values (val, val2); - if (cmp == -1) - return 1; - else if (cmp == 0 || cmp == 1) - return 0; - else - return -2; - } -} - /* Compare two values VAL1 and VAL2. Return -2 if VAL1 and VAL2 cannot be compared at compile-time, diff --git a/gcc/tree-vrp.h b/gcc/tree-vrp.h index 58216388ee6..ba0a314d510 100644 --- a/gcc/tree-vrp.h +++ b/gcc/tree-vrp.h @@ -24,7 +24,6 @@ along with GCC; see the file COPYING3. If not see extern int compare_values (tree, tree); extern int compare_values_warnv (tree, tree, bool *); -extern int operand_less_p (tree, tree); extern enum value_range_kind intersect_range_with_nonzero_bits (enum value_range_kind, wide_int *, wide_int *, const wide_int &, signop); diff --git a/gcc/value-range.cc b/gcc/value-range.cc index c11c3f58d2c..ee43efa1ab5 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -907,15 +907,10 @@ irange::operator= (const irange &src) value_range_kind get_legacy_range (const irange &r, tree &min, tree &max) { - value_range_kind old_kind = r.kind (); - tree old_min = r.min (); - tree old_max = r.max (); - if (r.undefined_p ()) { min = NULL_TREE; max = NULL_TREE; - gcc_checking_assert (old_kind == VR_UNDEFINED); return VR_UNDEFINED; } @@ -924,9 +919,6 @@ get_legacy_range (const irange &r, tree &min, tree &max) { min = wide_int_to_tree (type, r.lower_bound ()); max = wide_int_to_tree (type, r.upper_bound ()); - gcc_checking_assert (old_kind == VR_VARYING); - gcc_checking_assert (vrp_operand_equal_p (old_min, min)); - gcc_checking_assert (vrp_operand_equal_p (old_max, max)); return VR_VARYING; } @@ -946,9 +938,6 @@ get_legacy_range (const irange &r, tree &min, tree &max) min = wide_int_to_tree (type, r.lower_bound ()); max = wide_int_to_tree (type, r.upper_bound ()); - gcc_checking_assert (old_kind == VR_RANGE); - gcc_checking_assert (vrp_operand_equal_p (old_min, min)); - gcc_checking_assert (vrp_operand_equal_p (old_max, max)); return VR_RANGE; } @@ -1165,44 +1154,6 @@ irange::singleton_p (tree *result) const return false; } -/* Return 1 if VAL is inside value range. - 0 if VAL is not inside value range. - -2 if we cannot tell either way. - - Benchmark compile/20001226-1.c compilation time after changing this - function. */ - -int -irange::value_inside_range (tree val) const -{ - if (varying_p ()) - return 1; - - if (undefined_p ()) - return 0; - - gcc_checking_assert (TREE_CODE (val) == INTEGER_CST); - - // FIXME: - if (TREE_CODE (val) == INTEGER_CST) - return contains_p (val); - - int cmp1 = operand_less_p (val, min ()); - if (cmp1 == -2) - return -2; - if (cmp1 == 1) - return m_kind != VR_RANGE; - - int cmp2 = operand_less_p (max (), val); - if (cmp2 == -2) - return -2; - - if (m_kind == VR_RANGE) - return !cmp2; - else - return !!cmp2; -} - /* Return TRUE if range contains INTEGER_CST. */ /* Return 1 if VAL is inside value range. 0 if VAL is not inside value range. diff --git a/gcc/value-range.h b/gcc/value-range.h index 9d485fbbe77..68f380a2dbb 100644 --- a/gcc/value-range.h +++ b/gcc/value-range.h @@ -166,10 +166,6 @@ public: wide_int get_nonzero_bits () const; void set_nonzero_bits (const wide_int_ref &bits); - // Deprecated legacy public methods. - tree min () const; // DEPRECATED - tree max () const; // DEPRECATED - protected: irange (tree *, unsigned); // potential promotion to public? @@ -188,7 +184,6 @@ protected: void normalize_kind (); void verify_range (); - int value_inside_range (tree) const; private: friend void gt_ggc_mx (irange *); @@ -499,7 +494,6 @@ public: void set (tree min, tree max, value_range_kind kind = VR_RANGE) { return m_vrange->set (min, max, kind); } tree type () { return m_vrange->type (); } - enum value_range_kind kind () { return m_vrange->kind (); } bool varying_p () const { return m_vrange->varying_p (); } bool undefined_p () const { return m_vrange->undefined_p (); } void set_varying (tree type) { m_vrange->set_varying (type); } @@ -645,26 +639,12 @@ extern bool vrp_operand_equal_p (const_tree, const_tree); inline REAL_VALUE_TYPE frange_val_min (const_tree type); inline REAL_VALUE_TYPE frange_val_max (const_tree type); -inline value_range_kind -vrange::kind () const -{ - return m_kind; -} - // Number of sub-ranges in a range. inline unsigned irange::num_pairs () const { - if (m_kind == VR_ANTI_RANGE) - { - bool constant_p = (TREE_CODE (min ()) == INTEGER_CST - && TREE_CODE (max ()) == INTEGER_CST); - gcc_checking_assert (constant_p); - return 2; - } - else - return m_num_ranges; + return m_num_ranges; } inline tree @@ -701,21 +681,6 @@ irange::tree_upper_bound () const return tree_upper_bound (m_num_ranges - 1); } -inline tree -irange::min () const -{ - return tree_lower_bound (0); -} - -inline tree -irange::max () const -{ - if (m_num_ranges) - return tree_upper_bound (); - else - return NULL; -} - inline bool irange::varying_compatible_p () const {