GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
class | fur_source |
class | fur_stmt |
class | fur_depend |
class | fold_using_range |
Functions | |
bool | fold_range (vrange &r, gimple *s, range_query *q=NULL) |
bool | fold_range (vrange &v, gimple *s, edge on_edge, range_query *q=NULL) |
bool | fold_range (vrange &r, gimple *s, vrange &r1, range_query *q=NULL) |
bool | fold_range (vrange &r, gimple *s, vrange &r1, vrange &r2, range_query *q=NULL) |
bool | fold_range (vrange &r, gimple *s, unsigned num_elements, vrange **vector, range_query *q=NULL) |
bool | op1_range (vrange &, gimple *s, range_query *q=NULL) |
bool | op1_range (vrange &, gimple *s, const vrange &lhs, range_query *q=NULL) |
bool | op2_range (vrange &, gimple *s, range_query *q=NULL) |
bool | op2_range (vrange &, gimple *s, const vrange &lhs, range_query *q=NULL) |
relation_trio | fold_relations (gimple *s, range_query *q=NULL) |
tree | gimple_range_type (const gimple *s) |
tree | gimple_range_ssa_p (tree exp) |
bool fold_range | ( | vrange & | r, |
gimple * | s, | ||
range_query * | q = NULL ) |
Header file for the GIMPLE fold_using_range interface. Copyright (C) 2019-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/>.
References fold_using_range::fold_stmt(), and r.
bool fold_range | ( | vrange & | r, |
gimple * | s, | ||
unsigned | num_elements, | ||
vrange ** | vector, | ||
range_query * | q = NULL ) |
References fold_using_range::fold_stmt(), and r.
References fold_using_range::fold_stmt(), and r.
Referenced by gori_compute::edge_range_p(), and ranger_cache::range_of_def().
References fold_using_range::fold_stmt(), and r.
References fold_using_range::fold_stmt(), and r.
relation_trio fold_relations | ( | gimple * | s, |
range_query * | q = NULL ) |
References fold_using_range::fold_stmt(), gimple_get_lhs(), gimple_range_ssa_p(), TREE_TYPE, fur_relation::trio(), and TRIO_VARYING.
Referenced by phi_group::calculate_using_modifier().
References exp(), NULL_TREE, SSA_NAME_IS_VIRTUAL_OPERAND, SSA_NAME_OCCURS_IN_ABNORMAL_PHI, value_range::supports_type_p(), TREE_CODE, and TREE_TYPE.
Referenced by gimple_infer_range::add_nonzero(), assume_query::assume_query(), ranger_cache::block_range(), gori_map::calculate_gori(), assume_query::calculate_phi(), assume_query::calculate_stmt(), gimple_infer_range::check_assume_func(), gori_compute::compute_logical_operands(), gori_compute::compute_operand1_range(), gori_compute::compute_operand2_range(), gori_compute::compute_operand_range(), gori_compute::compute_operand_range_switch(), fold_using_range::condexpr_adjust(), assume_query::dump(), block_range_cache::dump(), equiv_oracle::dump(), ssa_cache::dump(), gimple_ranger::dump_bb(), gori_compute::edge_range_p(), gimple_ranger::export_global_ranges(), find_unswitching_predicates_for_bb(), fold_relations(), fold_using_range::fold_stmt(), path_range_query::get_cache(), range_query::get_tree_range(), gimple_infer_range::gimple_infer_range(), gimple_range_ssa_names(), gori_stmt_info::gori_stmt_info(), range_def_chain::in_chain_p(), phi_group::is_modifier_p(), path_range_query::maybe_register_phi_relation(), back_threader::maybe_thread_block(), fvrp_folder::pre_fold_bb(), gimple_ranger::prefill_name(), fold_using_range::range_of_address(), fold_using_range::range_of_call(), ranger_cache::range_of_def(), assume_query::range_of_expr(), dom_ranger::range_of_expr(), gimple_ranger::range_of_expr(), global_range_query::range_of_expr(), ranger_cache::range_of_expr(), ssa_cache::range_of_expr(), fold_using_range::range_of_phi(), fold_using_range::range_of_range_op(), dom_ranger::range_of_stmt(), gimple_ranger::range_of_stmt(), dom_ranger::range_on_edge(), gimple_ranger::range_on_edge(), ranger_cache::range_on_edge(), gimple_ranger::range_on_entry(), gimple_ranger::range_on_exit(), range_def_chain::register_dependency(), fur_source::register_outgoing_edges(), gimple_ranger::register_transitive_inferred_ranges(), fold_using_range::relation_fold_and_or(), and remove_unreachable::remove().
References boolean_type_node, gimple_call_fntype(), gimple_get_lhs(), gimple_phi_result(), NULL_TREE, value_range::supports_type_p(), TREE_TYPE, and type().
Referenced by debug_seed_ranger(), gimple_stmt_nonnegative_warnv_p(), loop_static_stmt_p(), gimple_range_op_handler::maybe_builtin_call(), op1_range(), op2_range(), fvrp_folder::pre_fold_stmt(), fold_using_range::range_of_call(), fold_using_range::range_of_cond_expr(), fold_using_range::range_of_phi(), fold_using_range::range_of_range_op(), path_range_query::range_of_stmt(), and hybrid_jt_simplifier::simplify().
bool op1_range | ( | vrange & | r, |
gimple * | s, | ||
range_query * | q = NULL ) |
References gimple_range_type(), op1_range(), r, and value_range::set_varying().
References gimple_range_op_handler::calc_op2(), fur_stmt::get_operand(), gimple_range_op_handler::operand1(), r, and TREE_TYPE.
Referenced by gori_compute::compute_operand1_range(), gori_compute::compute_operand2_range(), gimple_infer_range::gimple_infer_range(), op2_range(), and gori_compute::refine_using_relation().
bool op2_range | ( | vrange & | r, |
gimple * | s, | ||
range_query * | q = NULL ) |
References gimple_range_type(), op2_range(), r, and value_range::set_varying().