GCC Middle and Back End API Reference
|
#include <range-op-mixed.h>
Protected Member Functions | |
void | wi_fold_in_parts (irange &r, tree type, const wide_int &lh_lb, const wide_int &lh_ub, const wide_int &rh_lb, const wide_int &rh_ub) const |
void | wi_fold_in_parts_equiv (irange &r, tree type, const wide_int &lb, const wide_int &ub, unsigned limit) const |
virtual void | rv_fold (frange &r, tree type, const REAL_VALUE_TYPE &lh_lb, const REAL_VALUE_TYPE &lh_ub, const REAL_VALUE_TYPE &rh_lb, const REAL_VALUE_TYPE &rh_ub, relation_kind) const |
Private Member Functions | |
void | wi_fold (irange &r, tree type, const wide_int &lh_lb, const wide_int &lh_ub, const wide_int &rh_lb, const wide_int &rh_ub) const final override |
|
virtualinherited |
Floating point range operators. Copyright (C) 2022-2025 Free Software Foundation, Inc. Contributed by Aldy Hernandez <aldyh@redhat.com>. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
References empty_range_varying(), frange::known_isnan(), frange::lower_bound(), frange::maybe_isnan(), relation_trio::op1_op2(), r, rv_fold(), and frange::upper_bound().
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
References r.
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
References r.
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
References r.
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
References empty_range_varying(), gcc_checking_assert, irange::lower_bound(), irange::num_pairs(), relation_trio::op1_op2(), op1_op2_relation_effect(), r, relation_equiv_p(), update_bitmask(), irange::upper_bound(), wi_fold_in_parts(), wi_fold_in_parts_equiv(), and y.
Referenced by operator_lshift::fold_range(), operator_rshift::fold_range(), and foperator_div::op2_range().
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
|
virtualinherited |
Code for range operators. Copyright (C) 2017-2025 Free Software Foundation, Inc. Contributed by Andrew MacLeod <amacleod@redhat.com> and Aldy Hernandez <aldyh@redhat.com>. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
Reimplemented in cfn_clrsb, cfn_clz, cfn_constant_float_p, cfn_constant_p, cfn_copysign, cfn_ctz, cfn_ffs, cfn_goacc_dim, cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_parity, cfn_pass_through_arg1, cfn_popcount, cfn_signbit, cfn_sincos, cfn_sqrt, cfn_strlen, cfn_toupper_tolower, cfn_ubsan, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_abs, operator_addr_expr, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_cast, operator_cst, operator_equal, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_negate, operator_not_equal, operator_pointer_diff, operator_rshift, operator_unknown, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, operator_rshift, and pointer_plus_operator.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, operator_rshift, and pointer_plus_operator.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, operator_rshift, and pointer_plus_operator.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, operator_rshift, and pointer_plus_operator.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, operator_rshift, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, operator_rshift, and pointer_plus_operator.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, operator_rshift, and pointer_plus_operator.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_plus.
|
virtualinherited |
Reimplemented in operator_plus.
|
virtualinherited |
Reimplemented in operator_plus.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, and operator_not_equal.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, and operator_not_equal.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, and operator_not_equal.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, and operator_not_equal.
|
finaloverridevirtual |
Reimplemented from range_operator.
References irange::intersect(), irange::set_nonzero(), irange::set_zero(), VREL_EQ, VREL_NE, and VREL_VARYING.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
finaloverridevirtual |
Reimplemented from range_operator.
References boolean_type_node, BRS_FALSE, BRS_TRUE, contains_zero_p(), get_bool_state(), r, range_false(), range_true(), range_true_and_false(), types_compatible_p(), vrange::undefined_p(), vrange::varying_p(), and irange::zero_p().
Referenced by op2_range().
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
finaloverridevirtual |
Reimplemented from range_operator.
References op1_range(), and r.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
inlinefinaloverridevirtual |
Reimplemented from range_operator.
References range_compatible_p().
|
virtualinherited |
Reimplemented in operator_minus, operator_mult, and operator_plus.
|
protectedvirtualinherited |
Reimplemented in foperator_div, operator_minus, operator_mult, and operator_plus.
References dconstinf, dconstninf, r, and REAL_VALUE_TYPE.
Referenced by fold_range().
Reimplemented from range_operator.
|
finaloverridevirtual |
Reimplemented from range_operator.
References r, and update_known_bitmask().
|
finaloverrideprivatevirtual |
Reimplemented from range_operator.
References wi::bit_and_not(), wi::ge_p(), wi::lt_p(), wi::ne_p(), r, irange::set_nonzero(), SIGNED, TYPE_SIGN, value_range_with_overflow(), wi_optimize_signed_bitwise_op(), and wi_set_zero_nonzero_bits().
|
protectedinherited |
References r, wi::sub(), TYPE_SIGN, wi_fold(), and wi_fold_in_parts().
Referenced by fold_range(), and wi_fold_in_parts().
|
protectedinherited |
References r, wi::sub(), TYPE_SIGN, and wi_fold().
Referenced by fold_range().