|
bool | op1_range (irange &r, tree type, const irange &lhs, const irange &op2, relation_trio) const final override |
|
bool | op1_range (frange &r, tree type, const frange &lhs, const frange &op2, relation_trio=TRIO_VARYING) const final override |
|
bool | op2_range (irange &r, tree type, const irange &lhs, const irange &op1, relation_trio) const final override |
|
bool | op2_range (frange &r, tree type, const frange &lhs, const frange &op1, relation_trio=TRIO_VARYING) const final override |
|
relation_kind | lhs_op1_relation (const irange &lhs, const irange &op1, const irange &op2, relation_kind rel) const final override |
|
relation_kind | lhs_op2_relation (const irange &lhs, const irange &op1, const irange &op2, relation_kind rel) const final override |
|
void | update_bitmask (irange &r, const irange &lh, const irange &rh) const final override |
|
virtual bool | overflow_free_p (const irange &lh, const irange &rh, relation_trio=TRIO_VARYING) const |
|
bool | operand_check_p (tree t1, tree t2, tree t3) const final override |
|
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 irange &lhs, const frange &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 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 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 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 void | update_bitmask (irange &, const prange &, const prange &) const |
|
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 (prange &r, tree type, const prange &lh, const prange &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 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 | 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 |
|
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 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, range_operator::rv_fold(), and frange::upper_bound().
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 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.