|
bool | fold_range (irange &r, tree type, const irange &op1, const irange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
bool | fold_range (prange &r, tree type, const prange &op1, const prange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
bool | fold_range (irange &r, tree type, const prange &op1, const irange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
bool | fold_range (prange &r, tree type, const irange &op1, const prange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
bool | op1_range (irange &r, tree type, const irange &lhs, const irange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
bool | op1_range (prange &r, tree type, const prange &lhs, const prange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
bool | op1_range (irange &r, tree type, const prange &lhs, const irange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
bool | op1_range (prange &r, tree type, const irange &lhs, const prange &op2, relation_trio rel=TRIO_VARYING) const final override |
|
relation_kind | lhs_op1_relation (const irange &lhs, const irange &op1, const irange &op2, relation_kind) const final override |
|
relation_kind | lhs_op1_relation (const prange &lhs, const prange &op1, const prange &op2, relation_kind) const final override |
|
relation_kind | lhs_op1_relation (const prange &lhs, const irange &op1, const irange &op2, relation_kind) const final override |
|
relation_kind | lhs_op1_relation (const irange &lhs, const prange &op1, const prange &op2, relation_kind) const final override |
|
void | update_bitmask (irange &r, const irange &lh, const irange &rh) const final override |
|
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 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 | op1_range (prange &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 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 void | update_bitmask (irange &, const prange &, const prange &) const |
|
virtual bool | op2_range (irange &r, tree type, const irange &lhs, const irange &op1, 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_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 |
|
virtual bool | operand_check_p (tree, tree, tree) const |
|
|
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 | 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 |
|
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.
References empty_range_varying(), prange::get_bitmask(), prange::lower_bound(), r, prange::set(), and prange::upper_bound().