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 |
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 |
References gcc_checking_assert, and vrange::is_a.
References 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_().
References r, TYPE_PRECISION, and wi::zero().
Referenced by irange::set_range_from_bitmask().
|
extern |
References vrange::dump().
Referenced by debug().
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_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 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 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_lhs_range(), cfn_sincos::fold_range(), cfn_sqrt::fold_range(), frange_arithmetic(), frange_mpfr_arg1(), cfn_sincos::op1_range(), and cfn_sqrt::op1_range().
|
inline |
References frange_val_max(), r, real_identical(), and REAL_VALUE_TYPE.
Referenced by frange::normalize_kind(), and frange::verify_range().
|
inline |
References frange_val_min(), r, real_identical(), and REAL_VALUE_TYPE.
Referenced by frange::normalize_kind(), and frange::verify_range().
|
inline |
References dconstinf, HONOR_INFINITIES(), and real_max_representable().
Referenced by build_ge(), build_gt(), frange_val_is_max(), frange::normalize_kind(), cfn_signbit::op1_range(), operator_abs::op1_range(), frange::set(), frange::set_nonnegative(), and frange::set_varying().
|
inline |
References dconstninf, HONOR_INFINITIES(), and real_min_representable().
Referenced by build_le(), build_lt(), frange_val_is_min(), frange::normalize_kind(), cfn_signbit::op1_range(), frange::set(), and frange::set_varying().
|
extern |
References as_a(), get_legacy_range(), and is_a< irange >().
|
inline |
References gcc_checking_assert, 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(), max_limit(), and plus_minus_ranges().
|
inline |
References gcc_checking_assert, wi::min_value(), irange::supports_p(), TYPE_PRECISION, and TYPE_SIGN.
Referenced by check_for_binary_op_overflow(), operator_cast::inside_domain_p(), and min_limit().
References vrange::is_a.
References vrange::m_discriminator, and VR_FRANGE.
Referenced by inchash::add_vrange(), adjust_equivalence_range(), 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(), and streamer_read_value_range().
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(), and streamer_read_value_range().
References vrange::m_discriminator, and VR_PRANGE.
Referenced by inchash::add_vrange(), vrange_storage::alloc(), vrange_storage::equal_p(), vrange_storage::fits_p(), vrange_storage::get_vrange(), has_pointer_operand_p(), value_range::init(), vrange::operator=(), vrange::operator==(), vrange_storage::set_vrange(), and streamer_read_value_range().
|
inline |
References vrange::m_discriminator, and VR_UNKNOWN.
Referenced by vrange::operator=().
References 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_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(), 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(), 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(), and operator_cast::op1_range().
|
inline |
References gcc_checking_assert, get_max_float(), r, real_from_string(), REAL_MODE_FORMAT, REAL_VALUE_TYPE, and TYPE_MODE.
Referenced by 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(), and real_min_representable().
|
inline |
|
extern |
Return true, if VAL1 and VAL2 are equal values for VRP purposes.
References operand_equal_p().
Referenced by ipa_predicate::add_clause(), add_condition(), adjust_pointer_diff_expr(), and expr_eval_ops_equal_p().