GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
class | relation_oracle |
class | equiv_chain |
class | pe_slice |
class | equiv_oracle |
class | relation_chain_head |
class | dom_oracle |
class | path_oracle |
class | equiv_relation_iterator |
class | relation_trio |
class | value_relation |
Macros | |
#define | FOR_EACH_EQUIVALENCE(oracle, bb, name, equiv_name) |
#define | FOR_EACH_PARTIAL_EQUIV(oracle, bb, name, equiv_name, equiv_rel) |
#define | FOR_EACH_PARTIAL_AND_FULL_EQUIV(oracle, bb, name, equiv_name, equiv_rel) |
#define | TRIO_VARYING relation_trio () |
#define | TRIO_SHIFT 4 |
#define | TRIO_MASK 0x000F |
Typedefs | |
typedef enum relation_kind_t | relation_kind |
Enumerations | |
enum | relation_kind_t { VREL_VARYING = 0 , VREL_UNDEFINED , VREL_LT , VREL_LE , VREL_GT , VREL_GE , VREL_EQ , VREL_NE , VREL_PE8 , VREL_PE16 , VREL_PE32 , VREL_PE64 , VREL_LAST } |
Functions | |
relation_kind | relation_union (relation_kind r1, relation_kind r2) |
relation_kind | relation_intersect (relation_kind r1, relation_kind r2) |
relation_kind | relation_negate (relation_kind r) |
relation_kind | relation_swap (relation_kind r) |
bool | relation_lt_le_gt_ge_p (relation_kind r) |
bool | relation_partial_equiv_p (relation_kind r) |
bool | relation_equiv_p (relation_kind r) |
void | print_relation (FILE *f, relation_kind rel) |
void | adjust_equivalence_range (vrange &range) |
int | pe_to_bits (relation_kind t) |
relation_kind | bits_to_pe (int bits) |
relation_kind | pe_min (relation_kind t1, relation_kind t2) |
Variables | |
relation_oracle | default_relation_oracle |
#define FOR_EACH_EQUIVALENCE | ( | oracle, | |
bb, | |||
name, | |||
equiv_name ) |
#define FOR_EACH_PARTIAL_AND_FULL_EQUIV | ( | oracle, | |
bb, | |||
name, | |||
equiv_name, | |||
equiv_rel ) |
Referenced by ranger_cache::fill_block_cache().
#define FOR_EACH_PARTIAL_EQUIV | ( | oracle, | |
bb, | |||
name, | |||
equiv_name, | |||
equiv_rel ) |
#define TRIO_MASK 0x000F |
Referenced by relation_trio::lhs_op1(), relation_trio::lhs_op2(), and relation_trio::op1_op2().
#define TRIO_SHIFT 4 |
#define TRIO_VARYING relation_trio () |
Referenced by fold_relations().
typedef enum relation_kind_t relation_kind |
Header file for the value range relational processing. Copyright (C) 2020-2024 Free Software Foundation, Inc. Contributed by Andrew MacLeod <amacleod@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/>.
enum relation_kind_t |
Header file for the value range relational processing. Copyright (C) 2020-2024 Free Software Foundation, Inc. Contributed by Andrew MacLeod <amacleod@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/>.
Enumerator | |
---|---|
VREL_VARYING | |
VREL_UNDEFINED | |
VREL_LT | |
VREL_LE | |
VREL_GT | |
VREL_GE | |
VREL_EQ | |
VREL_NE | |
VREL_PE8 | |
VREL_PE16 | |
VREL_PE32 | |
VREL_PE64 | |
VREL_LAST |
void adjust_equivalence_range | ( | vrange & | range | ) |
References as_a(), frange::contains_p(), dconst0, dconstm0, is_a< frange >(), vrange::type(), vrange::undefined_p(), vrange::union_(), and zeros.
Referenced by ranger_cache::fill_block_cache().
|
inline |
References VREL_PE16, VREL_PE32, VREL_PE64, VREL_PE8, and VREL_VARYING.
Referenced by equiv_oracle::add_partial_equiv(), operator_bitwise_and::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), operator_cast::lhs_op1_relation(), and operator_cast::lhs_op1_relation().
|
inline |
References gcc_checking_assert, MIN, and relation_partial_equiv_p().
Referenced by equiv_oracle::add_partial_equiv(), equiv_relation_iterator::get_name(), and equiv_oracle::partial_equiv().
|
inline |
References VREL_PE16, VREL_PE32, VREL_PE64, and VREL_PE8.
Referenced by equiv_oracle::add_partial_equiv(), and ranger_cache::fill_block_cache().
void print_relation | ( | FILE * | f, |
relation_kind | rel ) |
References kind_string.
Referenced by value_relation::dump(), ranger_cache::fill_block_cache(), and fold_using_range::range_of_range_op().
|
inline |
References r, relation_partial_equiv_p(), and VREL_EQ.
Referenced by range_operator::fold_range(), equiv_relation_iterator::get_name(), and dom_oracle::record().
relation_kind relation_intersect | ( | relation_kind | r1, |
relation_kind | r2 ) |
|
inline |
References r, VREL_GE, and VREL_LT.
Referenced by adjust_op1_for_overflow().
relation_kind relation_negate | ( | relation_kind | r | ) |
References r, and rr_negate_table.
Referenced by value_relation::negate(), and fold_using_range::relation_fold_and_or().
|
inline |
References r, VREL_PE64, and VREL_PE8.
Referenced by pe_min(), equiv_oracle::record(), and relation_equiv_p().
relation_kind relation_swap | ( | relation_kind | r | ) |
References r, and rr_swap_table.
Referenced by value_relation::apply_transitive(), value_relation::create_trio(), relation_chain_head::find_relation(), dom_oracle::find_relation_block(), value_relation::intersect(), gori_compute::refine_using_relation(), fur_relation::register_relation(), relation_trio::swap_op1_op2(), and value_relation::union_().
relation_kind relation_union | ( | relation_kind | r1, |
relation_kind | r2 ) |
References rr_union_table.
Referenced by frelop_early_resolve(), fold_using_range::relation_fold_and_or(), relop_early_resolve(), and value_relation::union_().
|
extern |