|
GCC Middle and Back End API Reference
|

Go to the source code of this file.
Data Structures | |
| class | vrange |
| class | irange_bitmask |
| class | irange |
| class | int_range< N, RESIZABLE > |
| class | prange |
| class | unsupported_range |
| class | nan_state |
| struct | frange_pair |
| class | frange |
| class | vrange_visitor |
| class | value_range |
| union | value_range::buffer_type |
Namespaces | |
| namespace | inchash |
Typedefs | |
| typedef int_range< 3, true > | int_range_max |
Enumerations | |
| enum | value_range_kind { VR_UNDEFINED , VR_VARYING , VR_RANGE , VR_ANTI_RANGE , VR_NAN , VR_LAST } |
| enum | value_range_discriminator { VR_IRANGE , VR_PRANGE , VR_FRANGE , VR_UNKNOWN } |
| typedef int_range<3, true> int_range_max |
| enum value_range_kind |
|
inline |
References as_a(), gcc_checking_assert, and vrange::is_a.
|
inline |
References as_a(), gcc_checking_assert, and vrange::is_a.
Referenced by irange::fits_p(), value_range::init(), frange::intersect(), irange::intersect(), prange::intersect(), unsupported_range::intersect(), vrange::operator=(), vrange::operator==(), frange::union_(), irange::union_(), prange::union_(), and unsupported_range::union_().
|
extern |
References vrange::dump(), and dump_value_range().
Referenced by debug(), and dump_value_range().
| void frange_arithmetic | ( | enum | tree_code, |
| tree | type, | ||
| REAL_VALUE_TYPE & | result, | ||
| const REAL_VALUE_TYPE & | op1, | ||
| const REAL_VALUE_TYPE & | op2, | ||
| const REAL_VALUE_TYPE & | inf ) |
References frange_arithmetic(), frange_nextafter(), MODE_COMPOSITE_P, real_arithmetic(), real_convert(), real_equal(), REAL_EXP, real_identical(), real_isdenormal(), real_isinf(), real_isneg(), real_iszero(), real_less(), REAL_MODE_FORMAT, real_nextafter(), REAL_VALUE_TYPE, and TYPE_MODE.
Referenced by frange_arithmetic(), cfn_sqrt::op1_range(), foperator_div::rv_fold(), operator_minus::rv_fold(), operator_mult::rv_fold(), and operator_plus::rv_fold().
| void frange_nextafter | ( | enum | machine_mode, |
| REAL_VALUE_TYPE & | value, | ||
| const REAL_VALUE_TYPE & | inf ) |
References frange_nextafter(), MODE_COMPOSITE_P, real_convert(), real_isdenormal(), real_iszero(), REAL_MODE_FORMAT, real_nextafter(), and REAL_VALUE_TYPE.
Referenced by build_gt(), build_lt(), float_widen_bound(), cfn_sincos::fold_range(), cfn_sqrt::fold_range(), operator_cast::fold_range(), operator_cast::fold_range(), frange_arithmetic(), frange_fusible_p(), frange_mpfr_arg1(), frange_nextafter(), cfn_sincos::op1_range(), cfn_sqrt::op1_range(), operator_cast::op1_range(), operator_cast::op1_range(), and frange::set_excluding().
|
inline |
References frange_val_is_max(), frange_val_max(), r, real_identical(), and REAL_VALUE_TYPE.
Referenced by frange_val_is_max(), frange::normalize_kind(), and frange::verify_range().
|
inline |
References frange_val_is_min(), frange_val_min(), r, real_identical(), and REAL_VALUE_TYPE.
Referenced by frange_val_is_min(), frange::normalize_kind(), and frange::verify_range().
|
inline |
References dconstinf, frange_val_max(), HONOR_INFINITIES(), and real_max_representable().
Referenced by build_ge(), build_gt(), frange_val_is_max(), frange_val_max(), frange::normalize_kind(), cfn_signbit::op1_range(), operator_abs::op1_range(), frange::set(), frange::set_excluding(), frange::set_nonnegative(), and frange::set_varying().
|
inline |
References dconstninf, frange_val_min(), HONOR_INFINITIES(), and real_min_representable().
Referenced by build_le(), build_lt(), frange_val_is_min(), frange_val_min(), frange::normalize_kind(), cfn_signbit::op1_range(), frange::set(), frange::set_excluding(), and frange::set_varying().
|
extern |
References as_a(), get_legacy_range(), and is_a< irange >().
Referenced by array_bounds_checker::check_array_ref(), check_out_of_bounds_and_warn(), determine_block_size(), get_legacy_range(), get_legacy_range(), get_legacy_range(), get_range(), get_size_range(), maybe_diag_stxncpy_trunc(), set_switch_stmt_execution_predicate(), split_constant_offset(), and vect_get_range_info().
|
inline |
References gcc_checking_assert, irange_val_max(), wi::max_value(), irange::supports_p(), TYPE_PRECISION, and TYPE_SIGN.
Referenced by adjust_pointer_diff_expr(), check_for_binary_op_overflow(), cfn_goacc_dim::fold_range(), cfn_strlen::fold_range(), operator_cast::inside_domain_p(), irange_val_max(), max_limit(), and plus_minus_ranges().
|
inline |
References gcc_checking_assert, irange_val_min(), wi::min_value(), irange::supports_p(), TYPE_PRECISION, and TYPE_SIGN.
Referenced by check_for_binary_op_overflow(), operator_cast::inside_domain_p(), irange_val_min(), and min_limit().
References is_a(), and vrange::is_a.
References vrange::m_discriminator, and VR_FRANGE.
Referenced by inchash::add_vrange(), vrange_storage::alloc(), vrange_storage::equal_p(), vrange_storage::fits_p(), vrange_storage::get_vrange(), value_range::init(), vrange::operator=(), vrange::operator==(), vrange_storage::set_vrange(), streamer_read_value_range(), and vrange::streamer_write_vrange.
References vrange::m_discriminator, and VR_IRANGE.
Referenced by inchash::add_vrange(), vrange_storage::alloc(), vrange_storage::equal_p(), vrange_storage::fits_p(), get_legacy_range(), vrange_storage::get_vrange(), value_range::init(), vrange::operator=(), vrange::operator==(), vrange_storage::set_vrange(), streamer_read_value_range(), and vrange::streamer_write_vrange.
References vrange::m_discriminator, and VR_PRANGE.
Referenced by inchash::add_vrange(), vrange_storage::alloc(), vrange_storage::equal_p(), vrange_storage::fits_p(), fold_using_range::fold_stmt(), range_query::get_tree_range(), vrange_storage::get_vrange(), has_pointer_operand_p(), value_range::init(), vrange::operator=(), vrange::operator==(), fold_using_range::range_of_phi(), vrange_storage::set_vrange(), streamer_read_value_range(), vrange::streamer_write_vrange, rvrp_folder::value_of_expr(), and rvrp_folder::value_on_edge().
|
inline |
References vrange::m_discriminator, and VR_UNKNOWN.
References range_compatible_p(), TYPE_PRECISION, and TYPE_SIGN.
Referenced by fold_using_range::condexpr_adjust(), gori_compute::edge_range_p(), fold_using_range::fold_stmt(), fur_list::get_operand(), gori_stmt_info::gori_stmt_info(), irange::intersect(), prange::intersect(), gimple_range_op_handler::maybe_builtin_call(), operator_abs::operand_check_p(), operator_bitwise_and::operand_check_p(), operator_bitwise_not::operand_check_p(), operator_bitwise_or::operand_check_p(), operator_bitwise_xor::operand_check_p(), operator_equal::operand_check_p(), operator_ge::operand_check_p(), operator_gt::operand_check_p(), operator_le::operand_check_p(), operator_logical_and::operand_check_p(), operator_logical_not::operand_check_p(), operator_logical_or::operand_check_p(), operator_lshift::operand_check_p(), operator_lt::operand_check_p(), operator_max::operand_check_p(), operator_min::operand_check_p(), operator_minus::operand_check_p(), operator_mult::operand_check_p(), operator_negate::operand_check_p(), operator_not_equal::operand_check_p(), operator_plus::operand_check_p(), operator_rshift::operand_check_p(), range_compatible_p(), range_is_either_true_or_false(), fold_using_range::range_of_cond_expr(), gimple_ranger::range_on_edge(), and gimple_ranger::range_on_exit().
References build_zero_cst(), vrange::contains_p(), range_includes_zero_p(), vrange::type(), vrange::undefined_p(), and vrange::varying_p().
Referenced by cfn_clz::fold_range(), cfn_ctz::fold_range(), cfn_ffs::fold_range(), operator_bitwise_or::fold_range(), operator_max::fold_range(), operator_min::fold_range(), operator_plus::lhs_op1_relation(), pointer_plus_operator::lhs_op1_relation(), operator_equal::op1_op2_relation(), operator_ge::op1_op2_relation(), operator_gt::op1_op2_relation(), operator_le::op1_op2_relation(), operator_lt::op1_op2_relation(), operator_not_equal::op1_op2_relation(), cfn_isfinite::op1_range(), cfn_isinf::op1_range(), cfn_isnormal::op1_range(), operator_addr_expr::op1_range(), operator_cast::op1_range(), operator_cast::op1_range(), operator_cast::op1_range(), range_includes_zero_p(), shifted_range_nonzero_p(), simplify_count_zeroes(), and tree_single_nonnegative_p().
|
inline |
References gcc_checking_assert, get_max_float(), r, real_from_string(), real_max_representable(), REAL_MODE_FORMAT, REAL_VALUE_TYPE, and TYPE_MODE.
Referenced by operator_cast::fold_range(), frange_drop_inf(), frange_drop_infs(), frange_val_max(), cfn_isfinite::op1_range(), cfn_isinf::op1_range(), cfn_isnormal::op1_range(), cfn_sincos::op1_range(), real_max_representable(), and real_min_representable().
|
inline |
References r, real_max_representable(), real_min_representable(), real_value_negate(), and REAL_VALUE_TYPE.
Referenced by operator_cast::fold_range(), frange_drop_infs(), frange_drop_ninf(), frange_val_min(), cfn_isfinite::op1_range(), cfn_isinf::op1_range(), cfn_isnormal::op1_range(), cfn_sincos::op1_range(), and real_min_representable().
|
extern |
Return true, if VAL1 and VAL2 are equal values for VRP purposes.
References operand_equal_p(), and vrp_operand_equal_p().
Referenced by ipa_predicate::add_clause(), add_condition(), adjust_pointer_diff_expr(), expr_eval_ops_equal_p(), prange::pt_equal_p(), prange::pt_invariant_away_p(), prange::pt_invariant_p(), prange::pt_inverted_p(), fold_using_range::range_of_phi(), and vrp_operand_equal_p().