| GCC Middle and Back End API Reference
    | 
#include <value-range.h>


| Public Member Functions | |
| prange () | |
| prange (const prange &) | |
| prange (tree type) | |
| prange (tree type, const wide_int &, const wide_int &, value_range_kind=VR_RANGE) | |
| virtual bool | supports_type_p (const_tree type) const final override | 
| virtual void | accept (const vrange_visitor &v) const final override | 
| virtual void | set_undefined () final override | 
| virtual void | set_varying (tree type) final override | 
| virtual void | set_nonzero (tree type) final override | 
| virtual void | set_zero (tree type) final override | 
| virtual void | set_nonnegative (tree type) final override | 
| virtual bool | contains_p (tree cst) const final override | 
| virtual bool | fits_p (const vrange &v) const final override | 
| virtual bool | singleton_p (tree *result=NULL) const final override | 
| virtual bool | zero_p () const final override | 
| virtual bool | nonzero_p () const final override | 
| virtual void | set (tree, tree, value_range_kind=VR_RANGE) final override | 
| virtual tree | type () const final override | 
| virtual bool | union_ (const vrange &v) final override | 
| virtual bool | intersect (const vrange &v) final override | 
| virtual tree | lbound () const final override | 
| virtual tree | ubound () const final override | 
| prange & | operator= (const prange &) | 
| bool | operator== (const prange &) const | 
| void | set (tree type, const wide_int &, const wide_int &, value_range_kind=VR_RANGE) | 
| void | invert () | 
| bool | contains_p (const wide_int &) const | 
| wide_int | lower_bound () const | 
| wide_int | upper_bound () const | 
| virtual void | verify_range () const final override | 
| irange_bitmask | get_bitmask () const final override | 
| void | update_bitmask (const irange_bitmask &) final override | 
| virtual void | accept (const class vrange_visitor &v) const =0 | 
| virtual void | update_bitmask (const class irange_bitmask &) | 
| wide_int | get_nonzero_bits () const | 
| void | set_nonzero_bits (const wide_int &bits) | 
| bool | varying_p () const | 
| bool | undefined_p () const | 
| bool | operator== (const vrange &) const | 
| bool | operator!= (const vrange &r) const | 
| void | dump (FILE *) const | 
| Static Public Member Functions | |
| static bool | supports_p (const_tree type) | 
| Protected Member Functions | |
| bool | varying_compatible_p () const | 
| Protected Attributes | |
| tree | m_type | 
| wide_int | m_min | 
| wide_int | m_max | 
| irange_bitmask | m_bitmask | 
| enum value_range_kind | m_kind: 8 | 
| enum value_range_discriminator | m_discriminator: 4 | 
| Friends | |
| class | prange_storage | 
| class | vrange_printer | 
| 
 | inline | 
References set_undefined(), VR_PRANGE, and vrange::vrange().
Referenced by intersect(), operator=(), operator==(), prange(), union_(), and vrange_printer.
| 
 | inline | 
References prange(), r, VR_PRANGE, and vrange::vrange().
| 
 | inline | 
References set_varying(), type(), VR_PRANGE, and vrange::vrange().
| 
 | inline | 
References set(), type(), VR_PRANGE, and vrange::vrange().
| 
 | finaloverridevirtual | 
References vrange_visitor::visit().
| 
 | pure virtualinherited | 
Referenced by dump().
References wi::ge_p(), wi::le_p(), lower_bound(), vrange::undefined_p(), UNSIGNED, upper_bound(), and vrange::varying_p().
Implements vrange.
References contains_p(), and wi::to_wide().
Referenced by contains_p(), and vrange_printer.
| 
 | inherited | 
References accept(), pp_flush(), pp_needs_newline(), and pretty_printer::set_output_stream().
Referenced by assume_query::calculate_phi(), assume_query::calculate_stmt(), dump_strlen_info(), dump_value_range(), gori_compute::logical_combine(), phi_analyzer::process_phi(), and fold_using_range::relation_fold_and_or().
| 
 | inlinefinaloverridevirtual | 
Reimplemented from vrange.
References m_bitmask.
Referenced by operator_cast::fold_range(), operator_cast::fold_range(), operator_equal::fold_range(), operator_not_equal::fold_range(), varying_compatible_p(), and vrange_printer.
| 
 | inherited | 
References gcc_checking_assert, get_bitmask(), irange_bitmask::mask(), undefined_p(), and irange_bitmask::value().
Referenced by operator_lt::fold_range(), operator_lt::fold_range(), get_nonzero_bits_1(), and operator_bitwise_and::op1_range().
Implements vrange.
References as_a(), gcc_checking_assert, wi::gt_p(), lower_bound(), m_bitmask, m_max, m_min, m_type, wi::max(), wi::min(), prange(), r, range_compatible_p(), set_undefined(), set_varying(), type(), vrange::undefined_p(), UNSIGNED, upper_bound(), varying_compatible_p(), vrange::varying_p(), verify_range(), and vrange::vrange().
Referenced by operator_equal::fold_range(), operator_not_equal::fold_range(), and vrange_printer.
| void prange::invert | ( | ) | 
References wi::add(), gcc_checking_assert, lower_bound(), wi::max_value(), set(), set_varying(), wi::sub(), type(), TYPE_PRECISION, vrange::undefined_p(), UNSIGNED, upper_bound(), vrange::varying_p(), and wi::zero().
Referenced by vrange_printer.
| 
 | finaloverridevirtual | 
| 
 | inline | 
References gcc_checking_assert, m_min, and vrange::undefined_p().
Referenced by build_ge(), build_gt(), contains_p(), operator_cast::fold_range(), operator_cast::fold_range(), operator_equal::fold_range(), operator_ge::fold_range(), operator_gt::fold_range(), operator_le::fold_range(), operator_lt::fold_range(), operator_not_equal::fold_range(), pointer_plus_operator::fold_range(), intersect(), invert(), operator_equal::op1_range(), operator_not_equal::op1_range(), singleton_p(), union_(), and vrange_printer.
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References vrange::m_kind, m_max, m_min, and VR_RANGE.
Referenced by find_what_p_points_to(), and vrange_printer.
References m_bitmask, vrange::m_kind, m_max, m_min, m_type, prange(), and verify_range().
References m_bitmask, vrange::m_kind, m_max, m_min, prange(), type(), types_compatible_p(), vrange::undefined_p(), and vrange::varying_p().
References as_a(), gcc_unreachable, is_a< frange >(), is_a< irange >(), is_a< prange >(), and vrange().
| void prange::set | ( | tree | type, | 
| const wide_int & | min, | ||
| const wide_int & | max, | ||
| value_range_kind | kind = VR_RANGE ) | 
References gcc_checking_assert, m_bitmask, vrange::m_kind, m_max, m_min, m_type, set_nonzero(), set_undefined(), set_varying(), type(), TYPE_PRECISION, verify_range(), VR_ANTI_RANGE, VR_RANGE, VR_UNDEFINED, and VR_VARYING.
| 
 | finaloverridevirtual | 
Implements vrange.
References set(), wi::to_wide(), and TREE_TYPE.
Referenced by invert(), prange(), set(), set_nonnegative(), update_bitmask(), and vrange_printer.
| 
 | finaloverridevirtual | 
Implements vrange.
References wi::max_value(), set(), type(), TYPE_PRECISION, UNSIGNED, and wi::zero().
Referenced by vrange_printer.
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References m_bitmask, vrange::m_kind, m_max, m_min, m_type, wi::max_value(), wi::one(), type(), TYPE_PRECISION, UNSIGNED, verify_range(), and VR_RANGE.
Referenced by gimple_infer_range::add_nonzero(), sbr_sparse_bitmap::sbr_sparse_bitmap(), set(), and vrange_printer.
| 
 | inherited | 
References gcc_checking_assert, type(), TYPE_PRECISION, undefined_p(), update_bitmask(), and wi::zero().
Referenced by operator_bitwise_and::op1_range().
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References vrange::m_kind, and VR_UNDEFINED.
Referenced by intersect(), prange(), and set().
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References m_bitmask, vrange::m_kind, m_max, m_min, m_type, wi::max_value(), type(), TYPE_PRECISION, UNSIGNED, verify_range(), VR_VARYING, and wi::zero().
Referenced by intersect(), invert(), prange(), set(), union_(), and vrange_printer.
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References m_bitmask, vrange::m_kind, m_max, m_min, m_type, type(), TYPE_PRECISION, verify_range(), VR_RANGE, and wi::zero().
Referenced by vrange_printer.
Implements vrange.
References lower_bound(), vrange::m_kind, m_min, type(), upper_bound(), VR_RANGE, and wide_int_to_tree().
Referenced by vrange_printer.
| 
 | inlinestatic | 
References POINTER_TYPE_P, and type().
Referenced by vrange_allocator::clone_undefined(), vrange_allocator::clone_varying(), value_range::init(), ipa_vr_supported_type_p(), value_range::supports_type_p(), and verify_range().
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References POINTER_TYPE_P, and type().
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References gcc_checking_assert, m_type, and vrange::undefined_p().
Referenced by operator_cast::fold_range(), operator_ge::fold_range(), operator_gt::fold_range(), operator_le::fold_range(), operator_lt::fold_range(), intersect(), invert(), lbound(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::op1_range(), operator_cast::op1_range(), operator==(), prange(), prange(), set(), set_nonnegative(), set_nonzero(), set_varying(), set_zero(), singleton_p(), supports_p(), supports_type_p(), ubound(), union_(), update_bitmask(), verify_range(), and vrange_printer.
| 
 | finaloverridevirtual | 
| 
 | inlineinherited | 
References m_kind, and VR_UNDEFINED.
Referenced by inchash::add_vrange(), adjust_equivalence_range(), gimple_range_op_handler::calc_op1(), gimple_range_op_handler::calc_op2(), array_bounds_checker::check_array_ref(), check_for_binary_op_overflow(), frange::clear_nan(), frange::combine_zeros(), compare_nonzero_chars(), compute_distributive_range(), 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_range(), find_range_for_lhs(), frange::flush_denormals_to_zero(), cfn_clrsb::fold_range(), cfn_clz::fold_range(), cfn_ctz::fold_range(), cfn_ffs::fold_range(), cfn_isfinite::fold_range(), cfn_isinf::fold_range(), cfn_isnormal::fold_range(), cfn_popcount::fold_range(), operator_addr_expr::fold_range(), operator_cast::fold_range(), operator_equal::fold_range(), operator_equal::fold_range(), operator_equal::fold_range(), operator_logical_not::fold_range(), operator_lshift::fold_range(), operator_not_equal::fold_range(), operator_not_equal::fold_range(), operator_not_equal::fold_range(), operator_rshift::fold_range(), range_op_handler::fold_range(), irange::get_bitmask(), get_known_nonzero_bits_1(), get_nonzero_bits(), get_range_strlen_dynamic(), get_ref_base_and_extent(), get_shift_range(), get_size_range(), handle_printf_call(), frange::intersect(), irange::intersect(), irange::intersect(), prange::intersect(), unsupported_range::intersect(), irange::intersect_bitmask(), irange::invert(), prange::invert(), ipa_vr_operation_and_type_effects(), irange::irange_contains_p(), irange::irange_single_pair_union(), frange::known_isfinite(), simplify_using_ranges::legacy_fold_cond_overflow(), operator_bitwise_and::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_minus::lhs_op1_relation(), operator_plus::lhs_op1_relation(), operator_rshift::lhs_op1_relation(), pointer_plus_operator::lhs_op1_relation(), frange::lower_bound(), prange::lower_bound(), frange::maybe_isinf(), frange::maybe_isnan(), frange::maybe_isnan(), frange::nan_signbit_p(), irange::nonzero_p(), foperator_div::op1_range(), foperator_unordered_ge::op1_range(), foperator_unordered_gt::op1_range(), foperator_unordered_le::op1_range(), foperator_unordered_lt::op1_range(), operator_bitwise_xor::op1_range(), operator_equal::op1_range(), operator_equal::op1_range(), operator_ge::op1_range(), operator_ge::op1_range(), operator_ge::op1_range(), operator_gt::op1_range(), operator_gt::op1_range(), operator_gt::op1_range(), operator_le::op1_range(), operator_le::op1_range(), operator_le::op1_range(), operator_lt::op1_range(), operator_lt::op1_range(), operator_lt::op1_range(), operator_mult::op1_range(), operator_not_equal::op1_range(), operator_not_equal::op1_range(), operator_rshift::op1_range(), foperator_div::op2_range(), foperator_unordered_ge::op2_range(), foperator_unordered_gt::op2_range(), foperator_unordered_le::op2_range(), foperator_unordered_lt::op2_range(), operator_ge::op2_range(), operator_ge::op2_range(), operator_ge::op2_range(), operator_gt::op2_range(), operator_gt::op2_range(), operator_gt::op2_range(), operator_le::op2_range(), operator_le::op2_range(), operator_le::op2_range(), operator_lt::op2_range(), operator_lt::op2_range(), operator_lt::op2_range(), range_op_handler::op2_range(), frange::operator==(), prange::operator==(), operator_minus::overflow_free_p(), operator_mult::overflow_free_p(), operator_plus::overflow_free_p(), phi_group::phi_group(), phi_analyzer::process_phi(), range_fits_type_p(), range_includes_zero_p(), fur_source::register_outgoing_edges(), set_nonzero_bits(), irange::set_range_from_bitmask(), set_switch_stmt_execution_predicate(), frange::signbit_p(), simplify_using_ranges::simplify(), simplify_using_ranges::simplify_bit_ops_using_ranges(), 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(), irange::snap_subranges(), split_constant_offset(), streamer_write_vrange, simplify_using_ranges::two_valued_val_range_p(), frange::type(), prange::type(), frange::union_(), irange::union_(), prange::union_(), unsupported_range::union_(), irange::union_bitmask(), irange::update_bitmask(), pointer_plus_operator::update_bitmask(), prange::update_bitmask(), update_known_bitmask(), frange::update_nan(), frange::update_nan(), frange::update_nan(), frange::upper_bound(), prange::upper_bound(), prange::varying_compatible_p(), vect_get_range_info(), frange::verify_range(), and vr_set_zero_nonzero_bits().
Implements vrange.
References as_a(), lower_bound(), m_bitmask, wi::max(), wi::min(), prange(), r, set_varying(), type(), vrange::undefined_p(), irange_bitmask::union_(), UNSIGNED, upper_bound(), varying_compatible_p(), vrange::varying_p(), verify_range(), and vrange::vrange().
Referenced by vrange_printer.
| 
 | finaloverride | 
References gcc_checking_assert, m_bitmask, vrange::m_kind, irange_bitmask::mask(), set(), type(), vrange::undefined_p(), irange_bitmask::unknown_p(), irange_bitmask::value(), varying_compatible_p(), verify_range(), VR_RANGE, and VR_VARYING.
Referenced by vrange_printer.
| 
 | virtualinherited | 
Reimplemented in irange.
Referenced by set_nonzero_bits().
| 
 | inline | 
References gcc_checking_assert, m_max, and vrange::undefined_p().
Referenced by contains_p(), operator_cast::fold_range(), operator_cast::fold_range(), operator_equal::fold_range(), operator_ge::fold_range(), operator_gt::fold_range(), operator_le::fold_range(), operator_lt::fold_range(), operator_not_equal::fold_range(), pointer_plus_operator::fold_range(), intersect(), invert(), operator_minus::op1_op2_relation_effect(), operator_minus::op1_op2_relation_effect(), operator_equal::op1_range(), operator_not_equal::op1_range(), singleton_p(), union_(), and vrange_printer.
| 
 | inlineprotected | 
References get_bitmask(), m_max, m_min, and vrange::undefined_p().
Referenced by intersect(), union_(), update_bitmask(), verify_range(), and vrange_printer.
| 
 | inlineinherited | 
References m_kind, and VR_VARYING.
Referenced by gimple_outgoing_range::calc_switch_ranges(), phi_group::calculate_using_modifier(), array_bounds_checker::check_array_ref(), compare_nonzero_chars(), compute_distributive_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_range(), operator_cast::fold_range(), operator_logical_not::fold_range(), get_range_strlen_dynamic(), get_ref_base_and_extent(), frange::intersect(), irange::intersect(), prange::intersect(), unsupported_range::intersect(), irange::invert(), prange::invert(), ipa_vr_operation_and_type_effects(), irange::irange_contains_p(), irange::irange_single_pair_union(), frange::known_isfinite(), gori_compute::logical_combine(), frange::maybe_isinf(), ipcp_vr_lattice::meet_with_1(), operator_bitwise_xor::op1_range(), frange::operator==(), prange::operator==(), phi_group::phi_group(), phi_analyzer::process_phi(), 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(), frange::union_(), irange::union_(), prange::union_(), unsupported_range::union_(), and vr_set_zero_nonzero_bits().
| 
 | finaloverridevirtual | 
Reimplemented from vrange.
References gcc_checking_assert, vrange::m_discriminator, vrange::m_kind, supports_p(), type(), varying_compatible_p(), VR_PRANGE, VR_RANGE, VR_UNDEFINED, and VR_VARYING.
Referenced by intersect(), operator=(), set(), set_nonzero(), set_varying(), set_zero(), union_(), update_bitmask(), and vrange_printer.
| 
 | inlinefinaloverridevirtual | 
Implements vrange.
References vrange::m_kind, m_max, m_min, and VR_RANGE.
Referenced by operator_bitwise_and::fold_range(), operator_bitwise_or::fold_range(), operator_lt::fold_range(), operator_max::fold_range(), operator_min::fold_range(), and vrange_printer.
| 
 | friend | 
References prange_storage.
Referenced by prange_storage.
| 
 | friend | 
References contains_p(), final(), fits_p(), get_bitmask(), intersect(), invert(), lbound(), lower_bound(), nonzero_p(), NULL, prange(), set(), set_nonnegative(), set_nonzero(), set_varying(), set_zero(), singleton_p(), type(), ubound(), union_(), update_bitmask(), upper_bound(), varying_compatible_p(), verify_range(), VR_RANGE, vrange::vrange(), vrange_printer, and zero_p().
Referenced by vrange_printer.
| 
 | protected | 
Referenced by get_bitmask(), intersect(), operator=(), operator==(), set(), set_nonzero(), set_varying(), set_zero(), union_(), and update_bitmask().
| 
 | protectedinherited | 
| 
 | protectedinherited | 
Referenced by frange::combine_zeros(), frange::contains_p(), frange::internal_singleton_p(), frange::intersect(), irange::intersect(), irange::intersect(), frange::intersect_nans(), irange::invert(), frange::known_isfinite(), frange::known_isinf(), frange::known_isnan(), frange::maybe_isinf(), prange::nonzero_p(), frange::normalize_kind(), irange::normalize_kind(), frange::operator=(), irange::operator=(), prange::operator=(), frange::operator==(), prange::operator==(), frange::set(), irange::set(), prange::set(), frange::set_nan(), irange::set_nonzero(), prange::set_nonzero(), frange::set_undefined(), irange::set_undefined(), prange::set_undefined(), unsupported_range::set_undefined(), frange::set_varying(), irange::set_varying(), prange::set_varying(), unsupported_range::set_varying(), prange::set_zero(), prange::singleton_p(), streamer_write_vrange, undefined_p(), irange::union_(), frange::union_nans(), irange::update_bitmask(), prange::update_bitmask(), irange::varying_compatible_p(), varying_p(), frange::verify_range(), irange::verify_range(), prange::verify_range(), frange::zero_p(), irange::zero_p(), and prange::zero_p().
| 
 | protected | 
Referenced by intersect(), nonzero_p(), operator=(), operator==(), set(), set_nonzero(), set_varying(), set_zero(), ubound(), upper_bound(), varying_compatible_p(), and zero_p().
| 
 | protected | 
Referenced by intersect(), lbound(), lower_bound(), nonzero_p(), operator=(), operator==(), set(), set_nonzero(), set_varying(), set_zero(), singleton_p(), varying_compatible_p(), and zero_p().
| 
 | protected | 
Referenced by intersect(), operator=(), set(), set_nonzero(), set_varying(), set_zero(), and type().