GCC Middle and Back End API Reference
|
#include <value-range.h>
Static Public Member Functions | |
static bool | supports_p (const_tree type) |
Protected Member Functions | |
int_range (tree, tree, value_range_kind=VR_RANGE) | |
virtual void | set (tree, tree, value_range_kind=VR_RANGE) override |
virtual bool | contains_p (tree cst) const override |
void | maybe_resize (int needed) |
bool | irange_contains_p (const irange &) const |
bool | irange_single_pair_union (const irange &r) |
void | normalize_kind () |
void | verify_range () |
Protected Attributes | |
wide_int * | m_base |
enum value_range_kind | m_kind: 8 |
enum value_range_discriminator | m_discriminator: 4 |
Static Protected Attributes | |
static const int | HARD_MAX_RANGES = 255 |
Private Member Functions | |
bool | intersect (const wide_int &lb, const wide_int &ub) |
bool | varying_compatible_p () const |
bool | intersect_bitmask (const irange &r) |
bool | union_bitmask (const irange &r) |
bool | set_range_from_bitmask () |
bool | union_append (const irange &r) |
Private Attributes | |
wide_int | m_ranges [N *2] |
unsigned char | m_num_ranges |
bool | m_resizable |
unsigned char | m_max_ranges |
tree | m_type |
irange_bitmask | m_bitmask |
int_range< N, RESIZABLE >::int_range | ( | tree | type, |
const wide_int & | wmin, | ||
const wide_int & | wmax, | ||
value_range_kind | kind = VR_RANGE ) |
References ggc_alloc(), and irange::set().
References irange::set_varying().
References irange::operator=().
References irange::operator=().
References ggc_alloc(), irange::m_base, and int_range< N, RESIZABLE >::m_ranges.
|
protected |
References irange::set().
|
pure virtualinherited |
Referenced by Value_Range::accept(), and vrange::dump().
|
overridevirtualinherited |
References vrange_visitor::visit().
Return 1 if CST is inside value range. 0 if CST is not inside value range. Benchmark compile/20001226-1.c compilation time after changing this function.
References wi::bit_and(), irange_bitmask::get_nonzero_bits(), ggc_alloc(), wi::le_p(), irange::lower_bound(), wi::lt_p(), irange::m_bitmask, irange::m_num_ranges, r, TYPE_SIGN, vrange::undefined_p(), irange_bitmask::unknown_p(), and irange::upper_bound().
Referenced by irange::contains_p(), expr_not_equal_to(), cfn_signbit::op1_range(), and irange::set_range_from_bitmask().
Implements vrange.
References irange::contains_p(), ggc_alloc(), and wi::to_wide().
References vrange::accept(), pretty_printer::buffer, ggc_alloc(), pp_flush(), pp_needs_newline, and output_buffer::stream.
Referenced by gori_compute::compute_operand1_range(), gori_compute::compute_operand2_range(), gori_compute::compute_operand_range(), phi_group::dump(), Value_Range::dump(), dump_strlen_info(), dump_value_range(), and gori_compute::logical_combine().
Implements vrange.
References ggc_alloc(), irange::m_max_ranges, and r.
|
overridevirtualinherited |
Reimplemented from vrange.
References gcc_checking_assert, get_bitmask_from_range(), irange_bitmask::intersect(), irange::lower_bound(), irange::m_bitmask, vrange::undefined_p(), irange_bitmask::unknown_p(), and irange::upper_bound().
Referenced by operator_equal::fold_range(), operator_not_equal::fold_range(), irange::intersect_bitmask(), irange::operator==(), and irange::union_bitmask().
|
inherited |
References gcc_checking_assert, vrange::get_bitmask(), irange_bitmask::mask(), vrange::undefined_p(), and irange_bitmask::value().
Referenced by operator_lt::fold_range(), operator_lt::fold_range(), and operator_bitwise_and::op1_range().
Implements vrange.
References gcc_checking_assert, wi::ge_p(), ggc_alloc(), i, i2, irange::intersect(), irange::intersect_bitmask(), wi::le_p(), wi::lt_p(), irange::m_base, vrange::m_kind, irange::m_max_ranges, irange::m_num_ranges, irange::m_type, irange::maybe_resize(), irange::normalize_kind(), irange::num_pairs(), irange::operator=(), r, range_compatible_p(), irange::set_undefined(), TYPE_SIGN, vrange::undefined_p(), vrange::varying_p(), irange::verify_range(), and VR_RANGE.
Referenced by adjust_pointer_diff_expr(), irange_bitmask::adjust_range(), evaluate_control_stmt_using_entry_checks(), irange::intersect(), simplify_using_ranges::simplify(), and size_must_be_zero_p().
References gcc_checking_assert, wi::ge_p(), wi::get_precision(), ggc_alloc(), wi::gt_p(), i, wi::le_p(), irange::lower_bound(), wi::lt_p(), irange::m_base, vrange::m_kind, irange::m_num_ranges, irange::num_pairs(), irange::set_undefined(), irange::type(), TYPE_PRECISION, TYPE_SIGN, vrange::undefined_p(), irange::upper_bound(), and VR_RANGE.
|
inherited |
References wi::add(), add_one(), gcc_checking_assert, ggc_alloc(), i, irange::m_base, irange::m_bitmask, vrange::m_kind, irange::m_num_ranges, wi::max_value(), irange::maybe_resize(), wi::min_value(), irange_bitmask::set_unknown(), subtract_one(), irange::type(), TYPE_PRECISION, TYPE_SIGN, vrange::undefined_p(), vrange::varying_p(), irange::verify_range(), and VR_RANGE.
Referenced by irange_bitmask::adjust_range(), get_legacy_range(), operator_not_equal::op1_range(), operator_equal::op1_range(), and unswitch_predicate::unswitch_predicate().
References gcc_checking_assert, wi::ge_p(), ggc_alloc(), i, wi::le_p(), wi::lt_p(), irange::m_base, irange::m_type, irange::num_pairs(), r, TYPE_SIGN, vrange::undefined_p(), and vrange::varying_p().
Referenced by irange::union_().
References gcc_checking_assert, wi::ge_p(), ggc_alloc(), wi::le_p(), irange::m_base, irange::m_max_ranges, irange::m_num_ranges, irange::m_type, irange::normalize_kind(), r, TYPE_SIGN, vrange::undefined_p(), irange::union_bitmask(), vrange::varying_p(), and irange::verify_range().
Referenced by irange::union_().
|
overridevirtualinherited |
Implements vrange.
References irange::lower_bound(), and wide_int_to_tree().
References gcc_checking_assert, irange::m_base, irange::m_num_ranges, and irange::num_pairs().
Referenced by compare_nonzero_chars(), irange::contains_p(), strlen_pass::count_nonzero_bytes_addr(), determine_value_range(), dr_step_indicator(), expr_to_aff_combination(), operator_cast::fold_pair(), operator_equal::fold_range(), operator_not_equal::fold_range(), operator_lt::fold_range(), operator_le::fold_range(), operator_gt::fold_range(), operator_ge::fold_range(), pointer_plus_operator::fold_range(), irange::get_bitmask(), get_legacy_range(), get_range_strlen_dynamic(), get_ref_base_and_extent(), handle_printf_call(), irange::intersect(), irange::lbound(), operator_plus::lhs_op1_relation(), operator_rshift::lhs_op1_relation(), operator_bitwise_and::lhs_op1_relation(), irange::nonnegative_p(), operator_bitwise_and::op1_range(), operator_trunc_mod::op1_range(), operator_abs::op1_range(), operator_not_equal::op1_range(), operator_lt::op1_range(), operator_le::op1_range(), operator_gt::op1_range(), operator_ge::op1_range(), operator_equal::op1_range(), operator_trunc_mod::op2_range(), operator_lt::op2_range(), operator_le::op2_range(), operator_gt::op2_range(), operator_ge::op2_range(), irange::operator==(), range_fits_type_p(), phi_group::refine_using_relation(), operator_bitwise_and::simple_op1_range_solver(), simplify_conversion_using_ranges(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), irange::singleton_p(), irange::singleton_p(), test_for_singularity(), simplify_using_ranges::two_valued_val_range_p(), irange::verify_range(), vr_set_zero_nonzero_bits(), and irange::zero_p().
|
inlineprotectedinherited |
References ggc_alloc(), irange::HARD_MAX_RANGES, i, irange::m_base, irange::m_max_ranges, irange::m_resizable, and irange::num_pairs().
Referenced by irange::intersect(), irange::invert(), irange::operator=(), irange::union_(), and irange::union_append().
|
inherited |
References wi::ge_p(), irange::lower_bound(), and TYPE_SIGN.
|
inherited |
References wi::le_p(), TYPE_SIGN, and irange::upper_bound().
|
inlineoverridevirtualinherited |
Implements vrange.
References TYPE_PRECISION, vrange::undefined_p(), VR_ANTI_RANGE, and wi::zero().
|
inlineprotectedinherited |
References ggc_alloc(), vrange::m_kind, irange::m_num_ranges, irange::set_undefined(), irange::varying_compatible_p(), irange::verify_range(), VR_ANTI_RANGE, VR_RANGE, and VR_VARYING.
Referenced by irange::intersect(), irange::intersect_bitmask(), irange::irange_single_pair_union(), irange::operator=(), irange::union_(), irange::union_append(), irange::union_bitmask(), and irange::update_bitmask().
|
inlineinherited |
References irange::m_num_ranges.
Referenced by operator_cast::fold_range(), irange::intersect(), irange::intersect(), irange::irange_contains_p(), irange::lower_bound(), irange::maybe_resize(), operator_bitwise_and::op1_range(), irange::operator=(), irange::singleton_p(), irange::singleton_p(), simplify_using_ranges::two_valued_val_range_p(), irange::upper_bound(), and irange::upper_bound().
int_range< N, RESIZABLE > & int_range< N, RESIZABLE >::operator= | ( | const int_range< N, RESIZABLE > & | src | ) |
References irange::operator=().
References gcc_unreachable, ggc_alloc(), is_a< frange >(), is_a< irange >(), and is_a< prange >().
|
inherited |
Set value range to the canonical form of {VRTYPE, MIN, MAX, EQUIV}. This means adjusting VRTYPE, MIN and MAX representing the case of a wrapping range with MAX < MIN covering [MIN, type_max] U [type_min, MAX] as anti-rage ~[MAX+1, MIN-1]. Likewise for wrapping anti-ranges. In corner cases where MAX+1 or MIN-1 wraps this will fall back to varying. This routine exists to ease canonicalization in the case where we extract ranges from var + CST op limit.
References wi::add(), gcc_checking_assert, ggc_alloc(), irange::m_base, irange::m_bitmask, vrange::m_kind, irange::m_max_ranges, irange::m_num_ranges, irange::m_type, wi::max_value(), wi::min_value(), irange_bitmask::set_unknown(), SIGNED, wi::sub(), irange::type(), TYPE_PRECISION, TYPE_SIGN, irange::verify_range(), VR_ANTI_RANGE, VR_RANGE, VR_UNDEFINED, and VR_VARYING.
Referenced by int_range< N, RESIZABLE >::int_range(), int_range< N, RESIZABLE >::int_range(), phi_group::refine_using_relation(), irange::set(), irange::set_nonnegative(), irange::set_nonzero(), irange::set_range_from_bitmask(), and irange::set_zero().
|
overrideprotectedvirtualinherited |
Implements vrange.
References gcc_checking_assert, ggc_alloc(), POLY_INT_CST_P, irange::set(), irange::set_varying(), wi::to_wide(), TREE_CODE, and TREE_TYPE.
Implements vrange.
References irange::set(), wi::to_wide(), TYPE_MAX_VALUE, TYPE_PRECISION, and wi::zero().
Implements vrange.
References ggc_alloc(), irange::m_base, irange::m_bitmask, vrange::m_kind, irange::m_num_ranges, irange::m_type, wi::minus_one(), wi::one(), irange::set(), irange_bitmask::set_unknown(), irange::type(), TYPE_PRECISION, TYPE_UNSIGNED, irange::verify_range(), VR_ANTI_RANGE, VR_RANGE, and wi::zero().
Referenced by strlen_pass::handle_integral_assign().
References gcc_checking_assert, TYPE_PRECISION, vrange::undefined_p(), vrange::update_bitmask(), and wi::zero().
|
privateinherited |
References irange::contains_p(), contains_zero_p(), gcc_checking_assert, irange_bitmask::get_nonzero_bits(), ggc_alloc(), irange::m_bitmask, irange::m_type, irange_bitmask::mask(), wi::popcount(), irange::set(), irange_bitmask::set_nonzero_bits(), irange::set_zero(), vrange::undefined_p(), irange::union_(), irange_bitmask::unknown_p(), irange_bitmask::value(), and irange::verify_range().
Referenced by irange::intersect_bitmask(), and irange::update_bitmask().
|
inlineoverridevirtualinherited |
Implements vrange.
References vrange::m_kind, irange::m_num_ranges, and VR_UNDEFINED.
Referenced by operator_rshift::fold_range(), irange::intersect(), irange::intersect(), irange::irange(), irange::normalize_kind(), range_negatives(), simplify_using_ranges::simplify_compare_using_ranges_1(), and unsupported_range::unsupported_range().
Implements vrange.
References error_mark_node, INTEGRAL_TYPE_P, irange::m_base, irange::m_bitmask, vrange::m_kind, irange::m_num_ranges, irange::m_type, wi::max_value(), wi::min_value(), POINTER_TYPE_P, irange_bitmask::set_unknown(), irange::type(), TYPE_PRECISION, TYPE_SIGN, and VR_VARYING.
Referenced by adjust_imagpart_expr(), evaluate_conditions_for_known_args(), get_size_range(), int_range< N, RESIZABLE >::int_range(), operator_bitwise_xor::op1_range(), phi_group::phi_group(), irange::set(), set_switch_stmt_execution_predicate(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), size_must_be_zero_p(), split_constant_offset(), irange::union_(), unswitch_predicate::unswitch_predicate(), and vect_get_range_info().
Implements vrange.
References irange::set(), TYPE_PRECISION, and wi::zero().
Referenced by irange::set_range_from_bitmask().
If range is a singleton, place it in RESULT and return TRUE.
Implements vrange.
References irange::lower_bound(), irange::num_pairs(), irange::upper_bound(), and wide_int_to_tree().
Referenced by compare_nonzero_chars(), operator_bitwise_and::lhs_op1_relation(), operator_rshift::op1_range(), operator_cast::op1_range(), operator_lshift::op1_range(), operator_bitwise_and::op1_range(), operator_exact_divide::op1_range(), operator_mult::op1_range(), operator_cast::op1_range(), and operator_bitwise_and::simple_op1_range_solver().
References ggc_alloc(), irange::lower_bound(), irange::num_pairs(), and irange::upper_bound().
|
inlinestaticinherited |
References INTEGRAL_TYPE_P.
Referenced by assume_query::assume_query(), vrange_allocator::clone_undefined(), vrange_allocator::clone_varying(), evaluate_control_stmt_using_entry_checks(), get_nonzero_bits(), Value_Range::init(), ipa_supports_p(), irange_val_max(), irange_val_min(), gimple_range_op_handler::maybe_builtin_call(), phi_analyzer::operator[](), fold_using_range::range_of_phi(), fold_using_range::range_of_range_op(), Value_Range::supports_type_p(), irange::supports_type_p(), unswitch_predicate::unswitch_predicate(), unswitch_predicate::unswitch_predicate(), and irange::verify_range().
|
overridevirtualinherited |
Implements vrange.
References irange::supports_p().
|
inlineoverridevirtualinherited |
Implements vrange.
References gcc_checking_assert, irange::m_num_ranges, and irange::m_type.
Referenced by compare_nonzero_chars(), operator_cast::fold_pair(), operator_lt::fold_range(), operator_le::fold_range(), operator_gt::fold_range(), operator_ge::fold_range(), get_range_strlen_dynamic(), get_shift_range(), operator_cast::inside_domain_p(), irange::intersect(), irange::invert(), operator_plus::lhs_op1_relation(), operator_minus::lhs_op1_relation(), operator_rshift::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_bitwise_and::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), cfn_signbit::op1_range(), operator_rshift::op1_range(), operator_cast::op1_range(), operator_lshift::op1_range(), operator_bitwise_and::op1_range(), operator_cast::op1_range(), operator_cast::op1_range(), irange::operator==(), range_fits_type_p(), phi_group::refine_using_relation(), irange::set(), irange::set_nonzero(), irange::set_varying(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), and operator_cast::truncating_cast_p().
|
overridevirtualinherited |
Implements vrange.
References irange::upper_bound(), and wide_int_to_tree().
|
inlineinherited |
References vrange::m_kind, and VR_UNDEFINED.
Referenced by inchash::add_vrange(), adjust_equivalence_range(), array_bounds_checker::check_array_ref(), frange::clear_nan(), frange::combine_zeros(), compare_nonzero_chars(), gori_compute::compute_operand_range(), gori_compute::compute_operand_range_switch(), frange::contains_p(), irange::contains_p(), prange::contains_p(), strlen_pass::count_nonzero_bytes_addr(), determine_value_range(), dr_step_indicator(), empty_range_varying(), expr_not_equal_to(), expr_to_aff_combination(), find_case_label_ranges(), find_range_for_lhs(), frange::flush_denormals_to_zero(), operator_lshift::fold_range(), operator_rshift::fold_range(), irange::get_bitmask(), get_bool_state(), vrange::get_nonzero_bits(), get_range_strlen_dynamic(), get_ref_base_and_extent(), get_shift_range(), get_size_range(), handle_printf_call(), irange::intersect(), frange::intersect(), unsupported_range::intersect(), prange::intersect(), irange::intersect(), irange::intersect_bitmask(), irange::invert(), prange::invert(), irange::irange_contains_p(), irange::irange_single_pair_union(), frange::known_isfinite(), operator_identity::lhs_op1_relation(), operator_plus::lhs_op1_relation(), operator_minus::lhs_op1_relation(), operator_rshift::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_bitwise_and::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_identity::lhs_op1_relation(), operator_cast::lhs_op1_relation(), prange::lower_bound(), frange::lower_bound(), frange::maybe_isinf(), frange::maybe_isnan(), frange::maybe_isnan(), frange::nan_signbit_p(), irange::nonzero_p(), operator_equal::op1_op2_relation(), operator_not_equal::op1_op2_relation(), operator_lt::op1_op2_relation(), operator_le::op1_op2_relation(), operator_gt::op1_op2_relation(), operator_ge::op1_op2_relation(), operator_equal::op1_op2_relation(), operator_not_equal::op1_op2_relation(), operator_lt::op1_op2_relation(), operator_le::op1_op2_relation(), operator_gt::op1_op2_relation(), operator_ge::op1_op2_relation(), operator_equal::op1_op2_relation(), operator_not_equal::op1_op2_relation(), operator_lt::op1_op2_relation(), operator_le::op1_op2_relation(), operator_gt::op1_op2_relation(), operator_ge::op1_op2_relation(), foperator_div::op1_range(), operator_plus::op1_range(), operator_minus::op1_range(), operator_mult::op1_range(), operator_le::op1_range(), foperator_unordered_lt::op1_range(), foperator_unordered_le::op1_range(), foperator_unordered_gt::op1_range(), foperator_unordered_ge::op1_range(), operator_lt::op1_range(), operator_gt::op1_range(), operator_ge::op1_range(), operator_rshift::op1_range(), pointer_or_operator::op1_range(), operator_cast::op1_range(), operator_addr_expr::op1_range(), operator_bitwise_not::op1_range(), operator_bitwise_xor::op1_range(), operator_lshift::op1_range(), operator_bitwise_and::op1_range(), operator_bitwise_or::op1_range(), operator_exact_divide::op1_range(), operator_trunc_mod::op1_range(), operator_plus::op1_range(), operator_minus::op1_range(), operator_mult::op1_range(), operator_not_equal::op1_range(), operator_lt::op1_range(), operator_le::op1_range(), operator_gt::op1_range(), operator_ge::op1_range(), operator_equal::op1_range(), operator_cast::op1_range(), operator_cast::op1_range(), operator_not_equal::op1_range(), operator_lt::op1_range(), operator_le::op1_range(), operator_gt::op1_range(), operator_ge::op1_range(), operator_equal::op1_range(), operator_cast::op1_range(), operator_addr_expr::op1_range(), foperator_div::op2_range(), operator_minus::op2_range(), operator_le::op2_range(), foperator_unordered_lt::op2_range(), foperator_unordered_le::op2_range(), foperator_unordered_gt::op2_range(), foperator_unordered_ge::op2_range(), operator_lt::op2_range(), operator_gt::op2_range(), operator_ge::op2_range(), operator_trunc_mod::op2_range(), operator_minus::op2_range(), operator_lt::op2_range(), operator_le::op2_range(), operator_gt::op2_range(), operator_ge::op2_range(), operator_lt::op2_range(), operator_le::op2_range(), operator_gt::op2_range(), operator_ge::op2_range(), range_op_handler::op2_range(), frange::operator==(), prange::operator==(), range_fits_type_p(), range_includes_zero_p(), vrange::set_nonzero_bits(), set_nonzero_range_from_mask(), irange::set_range_from_bitmask(), set_switch_stmt_execution_predicate(), frange::signbit_p(), simplify_using_ranges::simplify(), simplify_using_ranges::simplify_casted_compare(), simplify_using_ranges::simplify_compare_using_ranges_1(), simplify_conversion_using_ranges(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), simplify_using_ranges::simplify_float_conversion_using_ranges(), simplify_using_ranges::simplify_switch_using_ranges(), size_must_be_zero_p(), split_constant_offset(), simplify_using_ranges::two_valued_val_range_p(), prange::type(), frange::type(), Value_Range::undefined_p(), irange::union_(), frange::union_(), unsupported_range::union_(), prange::union_(), irange::union_bitmask(), unswitch_predicate::unswitch_predicate(), irange::update_bitmask(), prange::update_bitmask(), operator_equal::update_bitmask(), frange::update_nan(), frange::update_nan(), frange::update_nan(), prange::upper_bound(), frange::upper_bound(), relation_oracle::validate_relation(), prange::varying_compatible_p(), vect_get_range_info(), frange::verify_range(), and vr_set_zero_nonzero_bits().
Implements vrange.
References ggc_alloc(), wi::gt_p(), i, irange::irange_contains_p(), irange::irange_single_pair_union(), irange::m_base, vrange::m_kind, irange::m_max_ranges, irange::m_num_ranges, irange::m_type, irange::maybe_resize(), irange::normalize_kind(), irange::operator=(), r, irange::set_varying(), TYPE_SIGN, vrange::undefined_p(), irange::union_append(), irange::union_bitmask(), irange::upper_bound(), vrange::varying_p(), irange::verify_range(), and VR_RANGE.
Referenced by operator_rshift::op1_range(), and irange::set_range_from_bitmask().
References gcc_checking_assert, irange::get_bitmask(), irange::m_bitmask, irange::normalize_kind(), r, vrange::undefined_p(), and irange_bitmask::union_().
Referenced by irange::irange_single_pair_union(), irange::union_(), and irange::union_append().
|
overridevirtualinherited |
Reimplemented from vrange.
References gcc_checking_assert, ggc_alloc(), irange::m_bitmask, vrange::m_kind, irange::normalize_kind(), irange::set_range_from_bitmask(), vrange::undefined_p(), irange_bitmask::unknown_p(), irange::verify_range(), VR_RANGE, and VR_VARYING.
|
inlineinherited |
References gcc_checking_assert, ggc_alloc(), irange::num_pairs(), and irange::upper_bound().
Referenced by irange::contains_p(), irange::get_bitmask(), irange::intersect(), irange::nonpositive_p(), irange::operator==(), irange::singleton_p(), irange::singleton_p(), irange::ubound(), irange::union_(), irange::union_append(), irange::upper_bound(), irange::verify_range(), and irange::zero_p().
References gcc_checking_assert, irange::m_base, irange::m_num_ranges, and irange::num_pairs().
Referenced by strlen_pass::count_nonzero_bytes_addr(), determine_value_range(), dr_step_indicator(), expr_to_aff_combination(), operator_cast::fold_pair(), operator_equal::fold_range(), operator_not_equal::fold_range(), operator_lt::fold_range(), operator_le::fold_range(), operator_gt::fold_range(), operator_ge::fold_range(), pointer_plus_operator::fold_range(), get_legacy_range(), get_range_strlen_dynamic(), get_ref_base_and_extent(), handle_printf_call(), operator_plus::lhs_op1_relation(), operator_bitwise_and::op1_range(), operator_trunc_mod::op1_range(), operator_not_equal::op1_range(), operator_lt::op1_range(), operator_le::op1_range(), operator_gt::op1_range(), operator_ge::op1_range(), operator_equal::op1_range(), operator_trunc_mod::op2_range(), operator_lt::op2_range(), operator_le::op2_range(), operator_gt::op2_range(), operator_ge::op2_range(), irange::operator==(), range_fits_type_p(), phi_group::refine_using_relation(), operator_bitwise_and::simple_op1_range_solver(), simplify_conversion_using_ranges(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), test_for_singularity(), simplify_using_ranges::two_valued_val_range_p(), and vr_set_zero_nonzero_bits().
|
inlineprivateinherited |
References INTEGRAL_TYPE_P, irange::m_base, irange::m_bitmask, vrange::m_kind, irange::m_num_ranges, irange::m_type, wi::max_value(), wi::min_value(), POINTER_TYPE_P, TYPE_PRECISION, TYPE_SIGN, irange_bitmask::unknown_p(), and VR_VARYING.
Referenced by irange::normalize_kind(), and irange::verify_range().
|
inlineinherited |
References vrange::m_kind, and VR_VARYING.
Referenced by array_bounds_checker::check_array_ref(), compare_nonzero_chars(), gori_compute::compute_operand_range(), frange::contains_p(), prange::contains_p(), unsupported_range::contains_p(), strlen_pass::count_nonzero_bytes_addr(), determine_value_range(), expr_to_aff_combination(), find_case_label_ranges(), operator_cast::fold_range(), get_range_strlen_dynamic(), get_ref_base_and_extent(), irange::intersect(), frange::intersect(), unsupported_range::intersect(), prange::intersect(), irange::invert(), prange::invert(), irange::irange_contains_p(), irange::irange_single_pair_union(), frange::known_isfinite(), frange::maybe_isinf(), operator_cast::op1_range(), operator_bitwise_xor::op1_range(), frange::operator==(), prange::operator==(), range_fits_type_p(), range_includes_zero_p(), simplify_using_ranges::simplify_casted_compare(), simplify_using_ranges::simplify_compare_using_ranges_1(), simplify_conversion_using_ranges(), simplify_using_ranges::simplify_div_or_mod_using_ranges(), simplify_using_ranges::simplify_float_conversion_using_ranges(), simplify_using_ranges::simplify_switch_using_ranges(), simplify_using_ranges::two_valued_val_range_p(), irange::union_(), frange::union_(), unsupported_range::union_(), prange::union_(), unswitch_predicate::unswitch_predicate(), Value_Range::varying_p(), and vr_set_zero_nonzero_bits().
|
protectedinherited |
References wi::cmp(), error_mark_node, gcc_checking_assert, wide_int_storage::get_precision(), i, irange::lower_bound(), irange::m_bitmask, vrange::m_discriminator, vrange::m_kind, irange::m_max_ranges, irange::m_num_ranges, irange::m_type, irange::supports_p(), TYPE_PRECISION, TYPE_SIGN, irange_bitmask::unknown_p(), irange::upper_bound(), irange::varying_compatible_p(), irange_bitmask::verify_mask(), VR_IRANGE, VR_UNDEFINED, and VR_VARYING.
Referenced by irange::intersect(), irange::intersect_bitmask(), irange::invert(), irange::irange_single_pair_union(), irange::normalize_kind(), irange::operator=(), irange::set(), irange::set_nonzero(), irange::set_range_from_bitmask(), irange::union_(), irange::union_append(), and irange::update_bitmask().
|
inlineoverridevirtualinherited |
Implements vrange.
References irange::lower_bound(), vrange::m_kind, irange::m_num_ranges, irange::upper_bound(), and VR_RANGE.
Referenced by gori_compute::compute_logical_operands(), evaluate_conditions_for_known_args(), operator_lt::fold_range(), operator_plus::lhs_op1_relation(), gori_compute::logical_combine(), operator_equal::op1_op2_relation(), operator_not_equal::op1_op2_relation(), operator_lt::op1_op2_relation(), operator_le::op1_op2_relation(), operator_gt::op1_op2_relation(), operator_ge::op1_op2_relation(), operator_equal::op1_op2_relation(), operator_not_equal::op1_op2_relation(), operator_lt::op1_op2_relation(), operator_le::op1_op2_relation(), operator_gt::op1_op2_relation(), operator_ge::op1_op2_relation(), operator_equal::op1_op2_relation(), operator_not_equal::op1_op2_relation(), operator_lt::op1_op2_relation(), operator_le::op1_op2_relation(), operator_gt::op1_op2_relation(), operator_ge::op1_op2_relation(), cfn_signbit::op1_range(), pointer_or_operator::op1_range(), operator_bitwise_xor::op1_range(), operator_bitwise_and::op1_range(), operator_bitwise_or::op1_range(), and size_must_be_zero_p().
|
staticprotectedinherited |
Referenced by irange::maybe_resize().
|
protectedinherited |
Referenced by irange::intersect(), irange::intersect(), irange::invert(), irange::irange(), irange::irange_contains_p(), irange::irange_single_pair_union(), irange::lower_bound(), irange::maybe_resize(), irange::operator=(), irange::set(), irange::set_nonzero(), irange::set_varying(), irange::union_(), irange::union_append(), irange::upper_bound(), irange::varying_compatible_p(), and int_range< N, RESIZABLE >::~int_range().
|
privateinherited |
Referenced by irange::contains_p(), irange::get_bitmask(), irange::intersect_bitmask(), irange::invert(), irange::operator=(), irange::set(), irange::set_nonzero(), irange::set_range_from_bitmask(), irange::set_varying(), irange::union_bitmask(), irange::update_bitmask(), irange::varying_compatible_p(), and irange::verify_range().
|
protectedinherited |
|
protectedinherited |
Referenced by frange::combine_zeros(), frange::contains_p(), frange::internal_singleton_p(), irange::intersect(), frange::intersect(), irange::intersect(), frange::intersect_nans(), irange::invert(), frange::known_isfinite(), frange::known_isinf(), frange::known_isnan(), frange::maybe_isinf(), prange::nonzero_p(), irange::normalize_kind(), frange::normalize_kind(), frange::operator=(), irange::operator=(), prange::operator=(), vrange::operator=(), frange::operator==(), prange::operator==(), frange::set(), irange::set(), prange::set(), frange::set_nan(), prange::set_nonzero(), irange::set_nonzero(), prange::set_undefined(), unsupported_range::set_undefined(), irange::set_undefined(), frange::set_undefined(), prange::set_varying(), irange::set_varying(), frange::set_varying(), unsupported_range::set_varying(), prange::set_zero(), prange::singleton_p(), vrange::undefined_p(), irange::union_(), frange::union_nans(), irange::update_bitmask(), prange::update_bitmask(), irange::varying_compatible_p(), vrange::varying_p(), irange::verify_range(), frange::verify_range(), prange::verify_range(), prange::zero_p(), irange::zero_p(), and frange::zero_p().
Referenced by irange::contains_p(), irange::intersect(), irange::intersect(), irange::invert(), irange::irange_single_pair_union(), irange::lower_bound(), irange::normalize_kind(), irange::num_pairs(), irange::operator=(), irange::operator==(), irange::set(), irange::set_nonzero(), irange::set_undefined(), irange::set_varying(), irange::type(), irange::union_(), irange::union_append(), irange::upper_bound(), irange::varying_compatible_p(), irange::verify_range(), and irange::zero_p().
Referenced by int_range< N, RESIZABLE >::~int_range().
|
privateinherited |
Referenced by irange::maybe_resize().
|
privateinherited |
Referenced by irange::intersect(), irange::irange_contains_p(), irange::irange_single_pair_union(), irange::operator=(), irange::set(), irange::set_nonzero(), irange::set_range_from_bitmask(), irange::set_varying(), irange::type(), irange::union_(), irange::union_append(), irange::varying_compatible_p(), and irange::verify_range().