GCC Middle and Back End API Reference
|
Static Public Member Functions | |
static bool | supported_p (gimple *s) |
Data Fields | |
value_range | op1_range |
value_range | op2_range |
tree | ssa1 |
tree | ssa2 |
Protected Member Functions | |
unsigned | dispatch_kind (const vrange &lhs, const vrange &op1, const vrange &op2) const |
void | discriminator_fail (const vrange &, const vrange &, const vrange &) const |
Protected Attributes | |
range_operator * | m_operator |
Private Member Functions | |
void | maybe_builtin_call () |
void | maybe_non_standard () |
Private Attributes | |
gimple * | m_stmt |
tree | m_op1 |
tree | m_op2 |
gori_stmt_info::gori_stmt_info | ( | vrange & | lhs, |
gimple * | stmt, | ||
range_query * | q ) |
References boolean_type_node, gcc_checking_assert, fur_stmt::get_operand(), gimple_expr_code(), gimple_range_ssa_p(), if(), is_a(), is_gimple_logical_p(), gimple_range_op_handler::lhs(), NULL, NULL_TREE, op1_range, op2_range, gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), range_compatible_p(), value_range::set_type(), ssa1, ssa2, gimple_range_op_handler::stmt(), and TREE_TYPE.
Referenced by gori_compute::compute_operand1_range(), gori_name_helper(), and op1_range().
|
inherited |
|
inherited |
|
protectedinherited |
References gcc_checking_assert, gcc_unreachable, and vrange::m_discriminator.
|
protectedinherited |
References dispatch_trio(), and vrange::m_discriminator.
Referenced by range_op_handler::fold_range(), range_op_handler::lhs_op1_relation(), range_op_handler::lhs_op2_relation(), range_op_handler::op1_op2_relation(), range_op_handler::op2_range(), range_op_handler::overflow_free_p(), and pointer_plus_operator::update_bitmask().
|
inherited |
References as_a(), range_op_handler::dispatch_kind(), range_operator::fold_range(), gcc_assert, gcc_checking_assert, range_op_handler::m_operator, range_operator::operand_check_p(), r, RO_IFF, RO_IFI, RO_III, vrange::type(), and vrange::undefined_p().
Referenced by compute_distributive_range(), evaluate_conditions_for_known_args(), simplify_using_ranges::fold_cond_with_ops(), cfn_ubsan::fold_range(), operator_bitwise_not::fold_range(), operator_negate::fold_range(), range_query::get_tree_range(), ipa_vr_intersect_with_arith_jfunc(), ipa_vr_operation_and_type_effects(), operator_pointer_diff::op1_op2_relation_effect(), foperator_div::op1_range(), operator_cast::op1_range(), operator_exact_divide::op1_range(), operator_minus::op1_range(), operator_mult::op1_range(), operator_mult::op1_range(), operator_plus::op1_range(), operator_plus::op1_range(), fold_using_range::range_of_range_op(), range_of_var_in_loop(), and gori_compute::refine_using_relation().
|
inlineinherited |
References gimple_get_lhs(), and gimple_range_op_handler::m_stmt.
Referenced by gori_compute::compute_logical_operands(), gori_compute::compute_operand_range(), gori_calc_operands(), gori_name_helper(), gori_name_on_edge(), gori_on_edge(), gori_stmt_info(), gimple_range_op_handler::maybe_builtin_call(), fold_using_range::range_of_range_op(), and fold_using_range::relation_fold_and_or().
|
inherited |
References as_a(), range_op_handler::dispatch_kind(), gcc_checking_assert, range_operator::lhs_op1_relation(), range_op_handler::m_operator, RO_FFF, RO_IFF, RO_III, RO_IPP, RO_PII, RO_PPP, and VREL_VARYING.
Referenced by fold_using_range::range_of_range_op().
|
inherited |
References as_a(), range_op_handler::dispatch_kind(), gcc_checking_assert, range_operator::lhs_op2_relation(), range_op_handler::m_operator, RO_FFF, RO_IFF, RO_III, and VREL_VARYING.
Referenced by fold_using_range::range_of_range_op().
|
privateinherited |
References as_a(), CASE_FLT_FN, gcc_checking_assert, gimple_call_arg(), gimple_call_combined_fn(), gimple_call_fnspec(), gimple_call_internal_p(), gimple_call_lhs(), gimple_call_num_args(), gimple_range_type(), is_a(), gimple_range_op_handler::lhs(), gimple_range_op_handler::m_op1, gimple_range_op_handler::m_op2, range_op_handler::m_operator, gimple_range_op_handler::m_stmt, oacc_get_ifn_dim_arg(), op_cfn_clrsb, op_cfn_clz(), op_cfn_clz_internal(), op_cfn_constant_float_p, op_cfn_constant_p, op_cfn_copysign, op_cfn_cos(), op_cfn_ctz(), op_cfn_ctz_internal(), op_cfn_ffs, op_cfn_goacc_dim_pos(), op_cfn_goacc_dim_size(), op_cfn_isfinite, op_cfn_isinf, op_cfn_isnormal, op_cfn_parity, op_cfn_pass_through_arg1, op_cfn_popcount, op_cfn_signbit, op_cfn_sin(), op_cfn_sqrt, op_cfn_strlen, op_cfn_tolower(), op_cfn_toupper(), op_cfn_ubsan_add, op_cfn_ubsan_mul, op_cfn_ubsan_sub, ptrdiff_type_node, range_compatible_p(), frange::supports_p(), irange::supports_p(), value_range::supports_type_p(), TREE_TYPE, and TYPE_PRECISION.
|
privateinherited |
References gcc_checking_assert, gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs_code(), gimple_range_op_handler::m_op1, gimple_range_op_handler::m_op2, range_op_handler::m_operator, gimple_range_op_handler::m_stmt, OP_WIDEN_MULT_SIGNED, OP_WIDEN_MULT_UNSIGNED, range_op_handler::range_op(), SIGNED, TREE_TYPE, and TYPE_SIGN.
|
inherited |
References as_a(), range_op_handler::dispatch_kind(), gcc_checking_assert, range_op_handler::m_operator, range_operator::op1_op2_relation(), RO_FFF, RO_IFF, RO_III, RO_IPP, and VREL_VARYING.
Referenced by gori_compute::compute_operand_range(), fur_source::register_outgoing_edges(), and fold_using_range::relation_fold_and_or().
|
inherited |
|
inherited |
References as_a(), range_op_handler::dispatch_kind(), gcc_assert, gcc_checking_assert, range_op_handler::m_operator, range_operator::op2_range(), range_operator::operand_check_p(), r, RO_FFF, RO_FIF, RO_III, RO_IPP, RO_PIP, vrange::type(), and vrange::undefined_p().
Referenced by gimple_range_op_handler::calc_op1(), gimple_range_op_handler::calc_op2(), fold_using_range::condexpr_adjust(), and gori_compute::refine_using_relation().
|
inlineinherited |
References gcc_checking_assert, gimple_range_op_handler::m_op1, and range_op_handler::m_operator.
Referenced by gimple_range_op_handler::calc_op1(), gimple_range_op_handler::calc_op2(), assume_query::calculate_stmt(), gori_compute::compute_operand1_and_operand2_range(), gori_compute::compute_operand1_range(), gori_compute::compute_operand2_range(), gori_compute::compute_operand_range(), gimple_infer_range::gimple_infer_range(), gimple_range_ssa_names(), gori_stmt_info(), phi_group::is_modifier_p(), op2_range(), gimple_ranger::prefill_stmt_dependencies(), fold_using_range::range_of_range_op(), gori_compute::refine_using_relation(), fur_source::register_outgoing_edges(), and fold_using_range::relation_fold_and_or().
|
inlineinherited |
References gcc_checking_assert, gimple_range_op_handler::m_op2, and range_op_handler::m_operator.
Referenced by gimple_range_op_handler::calc_op1(), gimple_range_op_handler::calc_op2(), assume_query::calculate_stmt(), gori_compute::compute_operand1_and_operand2_range(), gori_compute::compute_operand1_range(), gori_compute::compute_operand2_range(), gori_compute::compute_operand_range(), gimple_infer_range::gimple_infer_range(), gimple_range_ssa_names(), gori_stmt_info(), phi_group::is_modifier_p(), op1_range(), gimple_ranger::prefill_stmt_dependencies(), fold_using_range::range_of_range_op(), gori_compute::refine_using_relation(), fur_source::register_outgoing_edges(), and fold_using_range::relation_fold_and_or().
References gcc_checking_assert, range_op_handler::m_operator, and range_operator::operand_check_p().
Referenced by ipa_vr_intersect_with_arith_jfunc(), and ipa_vr_operation_and_type_effects().
|
inherited |
References default_operator.
|
inherited |
|
inherited |
References default_operator, and range_op_handler::m_operator.
Referenced by gimple_range_op_handler::maybe_non_standard(), and op1_range().
|
inlineinherited |
References gimple_range_op_handler::m_stmt.
Referenced by gori_compute::compute_logical_operands(), gori_compute::compute_operand1_range(), gori_compute::compute_operand2_range(), gori_calc_operands(), gori_name_helper(), gori_name_on_edge(), gori_on_edge(), gori_stmt_info(), and fold_using_range::range_of_range_op().
References get_code(), and is_a().
Referenced by gimple_outgoing_range_stmt_p(), gimple_ranger::prefill_name(), and gimple_ranger::prefill_stmt_dependencies().
|
privateinherited |
|
privateinherited |
|
protectedinherited |
Referenced by range_op_handler::fold_range(), range_op_handler::lhs_op1_relation(), range_op_handler::lhs_op2_relation(), gimple_range_op_handler::maybe_builtin_call(), gimple_range_op_handler::maybe_non_standard(), range_op_handler::op1_op2_relation(), cfn_signbit::op1_range(), op1_range(), range_op_handler::op2_range(), gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), range_op_handler::operand_check_p(), range_op_handler::overflow_free_p(), range_op_handler::range_op(), range_op_handler::range_op_handler(), and pointer_plus_operator::update_bitmask().
|
privateinherited |
value_range gori_stmt_info::op1_range |
Referenced by gori_stmt_info().
value_range gori_stmt_info::op2_range |
Referenced by gori_stmt_info().
tree gori_stmt_info::ssa1 |
Referenced by gori_stmt_info().
tree gori_stmt_info::ssa2 |
Referenced by gori_stmt_info().