|
GCC Middle and Back End API Reference
|
#include <range-op-mixed.h>


Public Member Functions | |
| relation_kind | lhs_op1_relation (const irange &lhs, const irange &op1, const irange &op2, relation_kind) const final override |
| bool | fold_range (prange &r, tree type, const prange &op1, const prange &op2, relation_trio) const final override |
| bool | op1_range (irange &r, tree type, const irange &lhs, const irange &op2, relation_trio rel=TRIO_VARYING) const override |
| bool | op2_range (irange &r, tree type, const irange &lhs, const irange &op1, relation_trio rel=TRIO_VARYING) const override |
| bool | op1_op2_relation_effect (irange &lhs_range, tree type, const irange &op1_range, const irange &op2_range, relation_kind rel) const final override |
| void | update_bitmask (irange &r, const irange &lh, const irange &rh) const override |
| bool | operand_check_p (tree t1, tree t2, tree t3) const final override |
| virtual bool | fold_range (irange &r, tree type, const irange &lh, const irange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (frange &r, tree type, const frange &lh, const frange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (irange &r, tree type, const frange &lh, const irange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (irange &r, tree type, const frange &lh, const frange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (frange &r, tree type, const irange &lh, const irange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (frange &r, tree type, const irange &lh, const frange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (prange &r, tree type, const prange &lh, const irange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (irange &r, tree type, const prange &lh, const prange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (prange &r, tree type, const irange &lh, const prange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | fold_range (irange &r, tree type, const prange &lh, const irange &rh, relation_trio=TRIO_VARYING) const |
| virtual bool | op1_range (prange &r, tree type, const prange &lhs, const prange &op2, relation_trio=TRIO_VARYING) const |
| virtual bool | op1_range (prange &r, tree type, const irange &lhs, const prange &op2, relation_trio=TRIO_VARYING) const |
| virtual bool | op1_range (prange &r, tree type, const prange &lhs, const irange &op2, relation_trio=TRIO_VARYING) const |
| virtual bool | op1_range (irange &r, tree type, const prange &lhs, const irange &op2, relation_trio=TRIO_VARYING) const |
| virtual bool | op1_range (frange &r, tree type, const frange &lhs, const frange &op2, relation_trio=TRIO_VARYING) const |
| virtual bool | op1_range (frange &r, tree type, const irange &lhs, const frange &op2, relation_trio=TRIO_VARYING) const |
| virtual bool | op1_range (irange &r, tree type, const frange &lhs, const irange &op2, relation_trio=TRIO_VARYING) const |
| virtual bool | op2_range (prange &r, tree type, const irange &lhs, const prange &op1, relation_trio=TRIO_VARYING) const |
| virtual bool | op2_range (irange &r, tree type, const prange &lhs, const prange &op1, relation_trio=TRIO_VARYING) const |
| virtual bool | op2_range (frange &r, tree type, const frange &lhs, const frange &op1, relation_trio=TRIO_VARYING) const |
| virtual bool | op2_range (frange &r, tree type, const irange &lhs, const frange &op1, relation_trio=TRIO_VARYING) const |
| virtual relation_kind | lhs_op1_relation (const prange &lhs, const prange &op1, const prange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | lhs_op1_relation (const prange &lhs, const irange &op1, const irange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | lhs_op1_relation (const irange &lhs, const prange &op1, const prange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | lhs_op1_relation (const prange &lhs, const prange &op1, const irange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | lhs_op1_relation (const frange &lhs, const frange &op1, const frange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | lhs_op1_relation (const irange &lhs, const frange &op1, const frange &op2, relation_kind=VREL_VARYING) 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 |
| virtual void | update_bitmask (irange &, const prange &, const prange &) const |
| virtual relation_kind | lhs_op2_relation (const irange &lhs, const irange &op1, const irange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | lhs_op2_relation (const frange &lhs, const frange &op1, const frange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | lhs_op2_relation (const irange &lhs, const frange &op1, const frange &op2, relation_kind=VREL_VARYING) const |
| virtual relation_kind | op1_op2_relation (const irange &lhs, const irange &op1, const irange &op2) const |
| virtual relation_kind | op1_op2_relation (const irange &lhs, const prange &op1, const prange &op2) const |
| virtual relation_kind | op1_op2_relation (const irange &lhs, const frange &op1, const frange &op2) const |
| virtual relation_kind | op1_op2_relation (const frange &lhs, const frange &op1, const frange &op2) const |
| virtual bool | overflow_free_p (const irange &lh, const irange &rh, relation_trio=TRIO_VARYING) const |
Protected 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 override |
| 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 |
|
virtual |
Floating point range operators. Copyright (C) 2022-2026 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.
|
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 |
Reimplemented from range_operator.
|
finaloverridevirtual |
Code for range operators. Copyright (C) 2017-2026 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.
References r, range_includes_zero_p(), update_known_bitmask(), and prange::zero_p().
Referenced by operator_bitwise_xor::fold_range().
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
finaloverridevirtual |
Reimplemented from range_operator.
References vrange::undefined_p(), VREL_EQ, and VREL_VARYING.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtual |
Reimplemented from range_operator.
|
virtualinherited |
Reimplemented in operator_max, operator_min, and operator_plus.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_max, operator_min, and operator_plus.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_max, operator_min, and operator_plus.
References VREL_VARYING.
Referenced by range_op_handler::lhs_op2_relation(), and range_op_table.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, operator_minus, and operator_not_equal.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, operator_minus, and operator_not_equal.
References VREL_VARYING.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, operator_minus, and operator_not_equal.
References VREL_VARYING.
Referenced by range_op_handler::op1_op2_relation(), and range_op_table.
|
virtualinherited |
Reimplemented in operator_equal, operator_ge, operator_gt, operator_le, operator_lt, operator_minus, and operator_not_equal.
|
finaloverridevirtual |
Reimplemented from range_operator.
References irange::intersect(), irange::set_nonzero(), 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.
|
overridevirtual |
Reimplemented from range_operator.
References boolean_type_node, wi::ge_p(), wi::max_value(), operator_logical_or::op1_range(), op_logical_or, r, SIGNED, TYPE_PRECISION, TYPE_SIGN, types_compatible_p(), and wi::zero().
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.
|
overridevirtual |
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.
Referenced by range_op_handler::overflow_free_p(), and range_op_table.
|
protectedvirtualinherited |
Reimplemented in foperator_div, operator_minus, operator_mult, and operator_plus.
References r.
Referenced by cfn_constant_float_p::fold_range(), and range_op_table.
|
virtual |
Reimplemented from range_operator.
|
overridevirtual |
Reimplemented from range_operator.
References r, and update_known_bitmask().
|
overrideprotectedvirtual |
Reimplemented from range_operator.
References wi::ge_p(), wi::gt_p(), wi::lt_p(), wi::max(), r, SIGNED, TYPE_SIGN, value_range_with_overflow(), wi_optimize_and_or(), 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(), range_op_table, and wi_fold_in_parts().
|
protectedinherited |
References r, wi::sub(), TYPE_SIGN, and wi_fold().
Referenced by fold_range(), and range_op_table.