GCC Middle and Back End API Reference
|
#include <range-op-mixed.h>
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 |
|
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 range_operator.
|
finaloverridevirtual |
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 range_operator.
References dconst0, empty_range_varying(), ggc_alloc(), frange::known_isnan(), frange::lower_bound(), frange::maybe_isnan(), r, real_compare(), real_iszero(), real_value_abs(), REAL_VALUE_TYPE, and frange::upper_bound().
|
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.
|
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 range_operator.
|
virtualinherited |
Reimplemented in operator_identity, operator_cast, operator_plus, operator_minus, operator_bitwise_and, hybrid_and_operator, hybrid_or_operator, and operator_rshift.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_identity, operator_cast, operator_plus, operator_minus, operator_bitwise_and, hybrid_and_operator, hybrid_or_operator, and operator_rshift.
|
virtualinherited |
Reimplemented in operator_identity, operator_plus, operator_minus, hybrid_and_operator, operator_rshift, operator_cast, operator_bitwise_and, operator_identity, operator_cast, operator_plus, operator_minus, operator_bitwise_and, hybrid_and_operator, hybrid_or_operator, and operator_rshift.
References VREL_VARYING.
Referenced by range_op_handler::lhs_op1_relation().
|
virtualinherited |
Reimplemented in operator_cast, operator_identity, operator_cast, operator_plus, operator_minus, operator_bitwise_and, hybrid_and_operator, hybrid_or_operator, and operator_rshift.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_cast, operator_identity, operator_cast, operator_plus, operator_minus, operator_bitwise_and, hybrid_and_operator, hybrid_or_operator, and operator_rshift.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_identity, operator_cast, operator_identity, operator_cast, operator_plus, operator_minus, operator_bitwise_and, hybrid_and_operator, hybrid_or_operator, and operator_rshift.
|
virtualinherited |
Reimplemented in operator_plus.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_plus.
|
virtualinherited |
Reimplemented in operator_plus, and operator_plus.
References VREL_VARYING.
Referenced by range_op_handler::lhs_op2_relation().
|
virtualinherited |
Reimplemented in operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, and operator_ge.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, and operator_ge.
|
virtualinherited |
Reimplemented in operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, and operator_ge.
References VREL_VARYING.
Referenced by range_op_handler::op1_op2_relation().
|
virtualinherited |
Reimplemented in operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, and operator_ge.
|
protectedvirtualinherited |
Reimplemented in operator_minus, operator_bitwise_xor, operator_pointer_diff, operator_pointer_diff, operator_minus, and operator_bitwise_xor.
Referenced by range_operator::fold_range().
|
protectedvirtualinherited |
Reimplemented in operator_minus, operator_bitwise_xor, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_minus, operator_bitwise_xor, operator_pointer_diff, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_minus, operator_bitwise_xor, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_minus, operator_bitwise_xor, and operator_pointer_diff.
|
protectedvirtualinherited |
Reimplemented in operator_minus, operator_bitwise_xor, and operator_pointer_diff.
|
finaloverridevirtual |
Reimplemented from range_operator.
References dconst0, empty_range_varying(), frange_val_max(), ggc_alloc(), frange::known_isnan(), r, and real_value_negate().
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
finaloverridevirtual |
Reimplemented from range_operator.
References empty_range_varying(), wi::eq_p(), ggc_alloc(), i, irange::lower_bound(), wi::min_value(), r, range_positives(), TYPE_OVERFLOW_UNDEFINED, TYPE_PRECISION, TYPE_SIGN, and TYPE_UNSIGNED.
|
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.
|
virtualinherited |
Reimplemented in foperator_unordered, foperator_ordered, foperator_unordered_lt, foperator_unordered_le, foperator_unordered_gt, foperator_unordered_ge, foperator_unordered_equal, foperator_ltgt, foperator_div, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_plus, operator_minus, operator_mult, operator_bitwise_xor, operator_bitwise_and, operator_bitwise_or, pointer_plus_operator, pointer_or_operator, hybrid_and_operator, hybrid_or_operator, operator_logical_and, operator_logical_or, operator_trunc_mod, foperator_div, operator_plus, operator_minus, and operator_mult.
|
virtualinherited |
Reimplemented in foperator_unordered, foperator_ordered, foperator_unordered_equal, foperator_ltgt, operator_equal, operator_le, foperator_unordered_lt, foperator_unordered, foperator_ordered, foperator_unordered_lt, foperator_unordered_le, foperator_unordered_gt, foperator_unordered_ge, foperator_unordered_equal, foperator_ltgt, foperator_div, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_plus, operator_minus, operator_mult, operator_bitwise_xor, operator_bitwise_and, operator_bitwise_or, pointer_plus_operator, pointer_or_operator, hybrid_and_operator, hybrid_or_operator, operator_logical_and, operator_logical_or, operator_trunc_mod, foperator_unordered_le, foperator_unordered_gt, foperator_unordered_ge, operator_not_equal, operator_lt, operator_gt, and operator_ge.
|
virtualinherited |
Reimplemented in pointer_or_operator, operator_logical_and, operator_logical_or, operator_bitwise_xor, hybrid_and_operator, hybrid_or_operator, operator_bitwise_and, operator_bitwise_or, operator_trunc_mod, operator_plus, operator_minus, operator_mult, foperator_unordered, foperator_ordered, foperator_unordered_lt, foperator_unordered_le, foperator_unordered_gt, foperator_unordered_ge, foperator_unordered_equal, foperator_ltgt, foperator_div, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_plus, operator_minus, operator_mult, operator_bitwise_xor, operator_bitwise_and, operator_bitwise_or, pointer_plus_operator, pointer_plus_operator, pointer_or_operator, hybrid_and_operator, hybrid_or_operator, operator_logical_and, operator_logical_or, operator_trunc_mod, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, and operator_equal.
Referenced by operator_pointer_diff::op1_op2_relation_effect(), operator_pointer_diff::op1_op2_relation_effect(), and range_op_handler::op2_range().
|
virtualinherited |
Reimplemented in foperator_unordered, foperator_ordered, foperator_unordered_lt, foperator_unordered_le, foperator_unordered_gt, foperator_unordered_ge, foperator_unordered_equal, foperator_ltgt, foperator_div, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_plus, operator_minus, operator_mult, operator_bitwise_xor, operator_bitwise_and, operator_bitwise_or, pointer_plus_operator, pointer_or_operator, hybrid_and_operator, hybrid_or_operator, operator_logical_and, operator_logical_or, operator_trunc_mod, and pointer_plus_operator.
|
virtualinherited |
Reimplemented in foperator_unordered, foperator_ordered, foperator_unordered_lt, foperator_unordered_le, foperator_unordered_gt, foperator_unordered_ge, foperator_unordered_equal, foperator_ltgt, foperator_div, operator_equal, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, operator_plus, operator_minus, operator_mult, operator_bitwise_xor, operator_bitwise_and, operator_bitwise_or, pointer_plus_operator, pointer_or_operator, hybrid_and_operator, hybrid_or_operator, operator_logical_and, operator_logical_or, operator_trunc_mod, operator_not_equal, operator_lt, operator_le, operator_gt, operator_ge, and operator_equal.
Reimplemented from range_operator.
References range_compatible_p().
|
virtualinherited |
Reimplemented in operator_plus, operator_minus, and operator_mult.
Referenced by range_op_handler::overflow_free_p().
|
protectedvirtualinherited |
Reimplemented in operator_mult, foperator_div, operator_plus, and operator_minus.
References dconstinf, dconstninf, and r.
Referenced by range_operator::fold_range().
Reimplemented from range_operator.
Reimplemented from range_operator.
|
finaloverridevirtual |
Reimplemented from range_operator.
References ggc_alloc(), r, and update_known_bitmask().
|
finaloverrideprivatevirtual |
Reimplemented from range_operator.
References wi::abs(), wi::eq_p(), wi::ge_p(), ggc_alloc(), wi::gt_p(), wi::le_p(), wi::max_value(), wi::min_value(), r, TYPE_OVERFLOW_UNDEFINED, TYPE_PRECISION, TYPE_SIGN, UNSIGNED, and wi::zero().
|
protectedinherited |
References ggc_alloc(), 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 ggc_alloc(), r, wi::sub(), TYPE_SIGN, and range_operator::wi_fold().
Referenced by range_operator::fold_range().