GCC Middle and Back End API Reference
|
Protected Member Functions | |
virtual 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 |
virtual bool | op1_op2_relation_effect (irange &lhs_range, tree type, const irange &op1_range, const irange &op2_range, relation_kind rel) const |
virtual bool | op1_op2_relation_effect (prange &lhs_range, tree type, const prange &op1_range, const prange &op2_range, relation_kind rel) const |
virtual bool | op1_op2_relation_effect (prange &lhs_range, tree type, const prange &op1_range, const irange &op2_range, relation_kind rel) const |
virtual bool | op1_op2_relation_effect (irange &lhs_range, tree type, const prange &op1_range, const prange &op2_range, relation_kind rel) const |
virtual bool | op1_op2_relation_effect (prange &lhs_range, tree type, const irange &op1_range, const prange &op2_range, relation_kind rel) const |
virtual bool | op1_op2_relation_effect (irange &lhs_range, tree type, const prange &op1_range, const irange &op2_range, relation_kind rel) const |
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 | update_bitmask (irange &, const irange &, const irange &) const |
virtual void | update_bitmask (irange &, const prange &, const prange &) 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 |
|
virtual |
Floating point range operators. Copyright (C) 2022-2024 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 from cfn_ffs.
|
virtual |
Reimplemented from cfn_ffs.
|
virtual |
Reimplemented from cfn_ffs.
|
virtual |
Reimplemented from cfn_ffs.
|
inlinevirtual |
Reimplemented from cfn_ffs.
References cfn_ffs::fold_range(), irange::get_bitmask(), irange_bitmask::get_nonzero_bits(), wi::popcount(), r, wi::shwi(), irange::singleton_p(), TYPE_PRECISION, vrange::undefined_p(), and irange_bitmask::value().
|
virtual |
Reimplemented from cfn_ffs.
|
virtual |
Reimplemented from cfn_ffs.
|
virtual |
Reimplemented from cfn_ffs.
|
virtual |
Reimplemented from cfn_ffs.
|
virtual |
Code for range operators. Copyright (C) 2017-2024 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 from cfn_ffs.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, and operator_rshift.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, and operator_rshift.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, and operator_rshift.
References VREL_VARYING.
Referenced by range_op_handler::lhs_op1_relation().
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, and operator_rshift.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, and operator_rshift.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_bitwise_and, operator_cast, operator_identity, operator_minus, operator_plus, and operator_rshift.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_plus.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_plus.
|
virtualinherited |
Reimplemented in operator_plus.
References VREL_VARYING.
Referenced by range_op_handler::lhs_op2_relation().
|
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.
Referenced by range_op_handler::op1_op2_relation().
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, and operator_not_equal.
|
protectedvirtualinherited |
Reimplemented in operator_bitwise_xor, operator_minus, and operator_pointer_diff.
Referenced by range_operator::fold_range().
|
protectedvirtualinherited |
Reimplemented in operator_bitwise_xor, operator_minus, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_bitwise_xor, operator_minus, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_bitwise_xor, operator_minus, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_bitwise_xor, operator_minus, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_bitwise_xor, operator_minus, and operator_pointer_diff.
|
virtualinherited |
Reimplemented in cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_pass_through_arg1, cfn_signbit, cfn_sincos, cfn_sqrt, foperator_div, 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_bitwise_xor, operator_cast, operator_equal, operator_exact_divide, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, operator_rshift, and operator_trunc_mod.
|
virtualinherited |
Reimplemented in cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_pass_through_arg1, cfn_signbit, cfn_sincos, cfn_sqrt, foperator_div, 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_bitwise_xor, operator_cast, operator_equal, operator_exact_divide, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, operator_rshift, and operator_trunc_mod.
|
virtualinherited |
Reimplemented in cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_pass_through_arg1, cfn_signbit, cfn_sincos, cfn_sqrt, foperator_div, 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_bitwise_xor, operator_cast, operator_equal, operator_exact_divide, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, operator_rshift, and operator_trunc_mod.
Referenced by pointer_plus_operator::update_bitmask().
|
virtualinherited |
Reimplemented in cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_pass_through_arg1, cfn_signbit, cfn_sincos, cfn_sqrt, foperator_div, 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_bitwise_xor, operator_cast, operator_equal, operator_exact_divide, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, operator_rshift, and operator_trunc_mod.
|
virtualinherited |
Reimplemented in cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_pass_through_arg1, cfn_signbit, cfn_sincos, cfn_sqrt, foperator_div, 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_bitwise_xor, operator_cast, operator_equal, operator_exact_divide, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, operator_rshift, and operator_trunc_mod.
|
virtualinherited |
Reimplemented in cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_pass_through_arg1, cfn_signbit, cfn_sincos, cfn_sqrt, foperator_div, 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_bitwise_xor, operator_cast, operator_equal, operator_exact_divide, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, operator_rshift, and operator_trunc_mod.
|
virtualinherited |
Reimplemented in cfn_isfinite, cfn_isinf, cfn_isnormal, cfn_pass_through_arg1, cfn_signbit, cfn_sincos, cfn_sqrt, foperator_div, 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_bitwise_xor, operator_cast, operator_equal, operator_exact_divide, operator_ge, operator_gt, operator_identity, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, operator_rshift, and operator_trunc_mod.
|
virtualinherited |
Reimplemented in foperator_div, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_bitwise_and, operator_bitwise_or, operator_bitwise_xor, operator_equal, operator_ge, operator_gt, operator_le, operator_logical_and, operator_logical_or, operator_lt, operator_minus, operator_mult, operator_not_equal, operator_plus, operator_trunc_mod, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in foperator_div, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_bitwise_and, operator_bitwise_or, operator_bitwise_xor, operator_equal, operator_ge, operator_gt, operator_le, operator_logical_and, operator_logical_or, operator_lt, operator_minus, operator_mult, operator_not_equal, operator_plus, operator_trunc_mod, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in foperator_div, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_bitwise_and, operator_bitwise_or, operator_bitwise_xor, operator_equal, operator_ge, operator_gt, operator_le, operator_logical_and, operator_logical_or, operator_lt, operator_minus, operator_mult, operator_not_equal, operator_plus, operator_trunc_mod, and pointer_plus_operator.
Referenced by operator_pointer_diff::op1_op2_relation_effect(), and range_op_handler::op2_range().
|
virtualinherited |
Reimplemented in foperator_div, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_bitwise_and, operator_bitwise_or, operator_bitwise_xor, operator_equal, operator_ge, operator_gt, operator_le, operator_logical_and, operator_logical_or, operator_lt, operator_minus, operator_mult, operator_not_equal, operator_plus, operator_trunc_mod, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in foperator_div, foperator_ltgt, foperator_ordered, foperator_unordered, foperator_unordered_equal, foperator_unordered_ge, foperator_unordered_gt, foperator_unordered_le, foperator_unordered_lt, operator_bitwise_and, operator_bitwise_or, operator_bitwise_xor, operator_equal, operator_ge, operator_gt, operator_le, operator_logical_and, operator_logical_or, operator_lt, operator_minus, operator_mult, operator_not_equal, operator_plus, operator_trunc_mod, and pointer_plus_operator.
Reimplemented in operator_abs, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_bitwise_xor, operator_equal, operator_ge, operator_gt, operator_le, operator_logical_and, operator_logical_not, operator_logical_or, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_mult, operator_negate, operator_not_equal, operator_plus, and operator_rshift.
Referenced by range_op_handler::fold_range(), range_op_handler::op2_range(), range_op_handler::operand_check_p(), and pointer_plus_operator::update_bitmask().
|
virtualinherited |
Reimplemented in operator_minus, operator_mult, and operator_plus.
Referenced by range_op_handler::overflow_free_p().
|
protectedvirtualinherited |
Reimplemented in foperator_div, operator_minus, operator_mult, and operator_plus.
References dconstinf, dconstninf, and r.
Referenced by range_operator::fold_range().
|
protectedvirtualinherited |
Reimplemented in operator_abs, operator_absu, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_bitwise_xor, operator_cast, operator_div, operator_equal, operator_ge, operator_gt, operator_le, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_mult, operator_not_equal, operator_plus, operator_pointer_diff, operator_rshift, operator_trunc_mod, and pointer_plus_operator.
Referenced by range_operator::fold_range().
|
protectedvirtualinherited |
Reimplemented in operator_abs, operator_absu, operator_bitwise_and, operator_bitwise_not, operator_bitwise_or, operator_bitwise_xor, operator_cast, operator_div, operator_equal, operator_ge, operator_gt, operator_le, operator_lshift, operator_lt, operator_max, operator_min, operator_minus, operator_mult, operator_not_equal, operator_plus, operator_pointer_diff, operator_rshift, operator_trunc_mod, and pointer_plus_operator.
|
protectedvirtualinherited |
Reimplemented in operator_abs, operator_absu, operator_bitwise_and, operator_bitwise_or, operator_bitwise_xor, operator_div, operator_lshift, operator_max, operator_min, operator_minus, operator_mult, operator_plus, operator_rshift, operator_trunc_mod, operator_widen_mult_signed, operator_widen_mult_unsigned, operator_widen_plus_signed, and operator_widen_plus_unsigned.
References gcc_checking_assert, and r.
Referenced by range_operator::wi_fold_in_parts(), and range_operator::wi_fold_in_parts_equiv().
|
protectedinherited |
References r, wi::sub(), TYPE_SIGN, range_operator::wi_fold(), and range_operator::wi_fold_in_parts().
Referenced by range_operator::fold_range(), and range_operator::wi_fold_in_parts().
|
protectedinherited |
References r, wi::sub(), TYPE_SIGN, and range_operator::wi_fold().
Referenced by range_operator::fold_range().