GCC Middle and Back End API Reference
|
#include <gimple-range.h>
Protected Member Functions | |
void | calculate_stmt (gimple *s, vrange &lhs_range, fur_source &src) |
void | calculate_op (tree op, gimple *s, vrange &lhs, fur_source &src) |
void | calculate_phi (gphi *phi, vrange &lhs_range, fur_source &src) |
void | check_taken_edge (edge e, fur_source &src) |
bool | get_tree_range (vrange &v, tree expr, gimple *stmt, basic_block bbentry=NULL, basic_block bbexit=NULL) |
bool | invoke_range_of_expr (vrange &v, tree expr, gimple *stmt, basic_block bbentry, basic_block bbexit) |
bool | get_arith_expr_range (vrange &r, tree expr, gimple *stmt) |
void | share_query (range_query &q) |
Protected Attributes | |
ssa_lazy_cache | global |
relation_oracle * | m_relation |
infer_range_oracle * | m_infer |
gimple_outgoing_range * | m_gori |
gori_map * | m_map |
bool | m_shared_copy_p |
assume_query::assume_query | ( | ) |
References as_a(), calculate_stmt(), cfun, range_query::create_gori(), EXIT_BLOCK_PTR_FOR_FN, gimple_get_lhs(), gimple_range_ssa_p(), gimple_return_retval(), global, gsi_end_p(), gsi_last_nondebug_bb(), gsi_stmt(), is_a(), wi::one(), ssa_lazy_cache::set_range(), single_pred(), single_pred_p(), SSA_NAME_DEF_STMT, irange::supports_p(), TREE_TYPE, and TYPE_PRECISION.
assume_query::~assume_query | ( | ) |
References range_query::destroy_gori().
References ssa_lazy_cache::get_range(), global, and r.
Referenced by dump().
|
protected |
References calculate_stmt(), gimple_get_lhs(), global, range_query::gori(), ssa_lazy_cache::merge_range(), SSA_NAME_DEF_STMT, TREE_TYPE, and value_range::varying_p().
Referenced by calculate_stmt().
|
protected |
References calculate_stmt(), check_taken_edge(), ssa_lazy_cache::get_range(), range_query::get_tree_range(), gimple_get_lhs(), gimple_phi_arg_def(), gimple_phi_arg_edge(), gimple_phi_num_args(), gimple_range_ssa_p(), global, value_range::intersect(), NULL, range_cast(), ssa_lazy_cache::set_range(), SSA_NAME_DEF_STMT, TREE_TYPE, and value_range::undefined_p().
Referenced by calculate_stmt().
|
protected |
References as_a(), calculate_op(), calculate_phi(), check_taken_edge(), gimple_bb(), gimple_range_ssa_p(), is_a(), gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), single_pred_edge(), and single_pred_p().
Referenced by assume_query(), calculate_op(), calculate_phi(), and check_taken_edge().
|
protected |
References calculate_stmt(), gcond_edge_range(), gimple_outgoing_range_stmt_p(), and is_a().
Referenced by calculate_phi(), and calculate_stmt().
|
inherited |
References default_gori, gcc_checking_assert, range_query::m_gori, range_query::m_map, and NULL.
Referenced by assume_query(), and ranger_cache::ranger_cache().
References default_infer_oracle, gcc_checking_assert, and range_query::m_infer.
Referenced by ranger_cache::ranger_cache().
References CDI_DOMINATORS, default_relation_oracle, dom_info_available_p(), gcc_checking_assert, global_ranges, and range_query::m_relation.
Referenced by execute_fast_vrp(), and ranger_cache::ranger_cache().
|
inherited |
References default_gori, range_query::m_gori, range_query::m_map, and NULL.
Referenced by ~assume_query(), and range_query::~range_query().
|
inherited |
References default_infer_oracle, and range_query::m_infer.
Referenced by range_query::~range_query(), and ranger_cache::~ranger_cache().
|
inherited |
References default_relation_oracle, and range_query::m_relation.
Referenced by execute_fast_vrp(), range_query::~range_query(), and ranger_cache::~ranger_cache().
|
virtual |
Reimplemented from range_query.
References assume_range_p(), value_range::dump(), fputc(), gimple_range_ssa_p(), i, num_ssa_names, print_generic_expr(), ssa_name, value_range::supports_type_p(), TDF_SLIM, and TREE_TYPE.
|
protectedinherited |
References as_a(), BINARY_CLASS_P, COMPARISON_CLASS_P, drop_tree_overflow(), expr, range_op_handler::fold_range(), gimple_range_global(), gimple_range_ssa_p(), range_query::invoke_range_of_expr(), r, real_isnan(), real_isneg(), REAL_VALUE_TYPE, frange::set(), frange::set_nan(), value_range::set_varying(), value_range::supports_type_p(), TREE_CODE, TREE_OPERAND, TREE_OVERFLOW_P, TREE_REAL_CST_PTR, tree_single_nonzero_warnv_p(), TREE_TYPE, type(), TYPE_P, and UNARY_CLASS_P.
Referenced by calculate_phi(), 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(), 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(), and gimple_ranger::range_on_exit().
|
inlineinherited |
References range_query::m_gori.
Referenced by ranger_cache::block_range(), calculate_op(), path_range_query::compute_ranges_in_block(), gimple_ranger::dump_bb(), ranger_cache::edge_range(), evaluate_control_stmt_using_entry_checks(), ranger_cache::fill_block_cache(), fur_source::gori(), gori_on_edge(), ranger_cache::range_from_dom(), and ranger_cache::register_inferred_value().
|
inlineinherited |
References range_query::m_map.
Referenced by hybrid_jt_simplifier::compute_exit_dependencies(), path_range_query::compute_exit_dependencies(), path_range_query::compute_ranges_in_block(), ranger_cache::dump_bb(), ranger_cache::get_global_range(), fur_source::gori_ssa(), remove_unreachable::handle_early(), gimple_ranger::range_of_stmt(), ranger_cache::ranger_cache(), ranger_cache::register_inferred_value(), gimple_ranger::register_transitive_inferred_ranges(), remove_unreachable::remove_and_update_globals(), ranger_cache::set_global_range(), and dom_opt_dom_walker::set_global_ranges_from_unreachable_edges().
|
inlineinherited |
References range_query::m_infer.
Referenced by path_range_query::adjust_for_non_null_uses(), ranger_cache::apply_inferred_ranges(), ranger_cache::edge_range(), ranger_cache::fill_block_cache(), path_range_query::range_defined_in_block(), ranger_cache::range_from_dom(), gimple_ranger::range_on_edge(), and gimple_ranger::register_transitive_inferred_ranges().
|
protectedinherited |
References gcc_checking_assert, r, range_query::range_of_expr(), range_query::range_on_entry(), and range_query::range_on_exit().
Referenced by range_query::get_tree_range().
Implements range_query.
References ssa_lazy_cache::get_range(), range_query::get_tree_range(), gimple_range_ssa_p(), global, r, and TREE_TYPE.
Reimplemented in dom_ranger, gimple_ranger, and path_range_query.
References gcc_checking_assert, gimple_get_lhs(), r, and range_query::range_of_expr().
Referenced by simplify_using_ranges::fold_cond(), and range_query::value_of_stmt().
Support routines for value queries. Copyright (C) 2020-2024 Free Software Foundation, Inc. Contributed by Aldy Hernandez <aldyh@redhat.com> and 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/>.
Reimplemented in dom_ranger, gimple_ranger, and ranger_cache.
References r, and range_query::range_of_expr().
Referenced by fur_edge::get_operand(), fur_edge::get_phi_operand(), fur_source::get_phi_operand(), phi_analyzer::process_phi(), and range_query::value_on_edge().
|
virtualinherited |
Reimplemented in gimple_ranger.
References r, and range_query::range_of_expr().
Referenced by remove_unreachable::handle_early(), range_query::invoke_range_of_expr(), remove_unreachable::remove_and_update_globals(), and range_query::value_on_entry().
|
virtualinherited |
Reimplemented in gimple_ranger.
References r, and range_query::range_of_expr().
Referenced by range_query::invoke_range_of_expr(), and range_query::value_on_exit().
|
inlineinherited |
References range_query::m_relation.
Referenced by path_range_query::compute_ranges(), path_range_query::path_range_query(), path_range_query::path_range_query(), fur_stmt::query_relation(), jt_fur_source::query_relation(), fold_using_range::range_of_phi(), fur_depend::register_relation(), fur_depend::register_relation(), jt_fur_source::register_relation(), and jt_fur_source::register_relation().
|
protectedinherited |
Reimplemented in ccp_folder, copy_folder, fvrp_folder, rvrp_folder, and substitute_and_fold_engine.
References NULL_TREE, r, range_query::range_of_expr(), value_range::supports_type_p(), and TREE_TYPE.
Referenced by pta_valueize(), fvrp_folder::value_of_expr(), and rvrp_folder::value_of_expr().
Reimplemented in fvrp_folder, rvrp_folder, and substitute_and_fold_engine.
References gcc_checking_assert, gimple_get_lhs(), NULL_TREE, r, range_query::range_of_stmt(), value_range::supports_type_p(), and TREE_TYPE.
Referenced by fvrp_folder::value_of_stmt(), and rvrp_folder::value_of_stmt().
Reimplemented in fvrp_folder, rvrp_folder, and substitute_and_fold_engine.
References NULL_TREE, r, range_query::range_of_expr(), range_query::range_on_edge(), value_range::supports_type_p(), and TREE_TYPE.
Referenced by fvrp_folder::value_on_edge(), and rvrp_folder::value_on_edge().
|
virtualinherited |
References gcc_checking_assert, NULL_TREE, r, range_query::range_on_entry(), value_range::supports_type_p(), and TREE_TYPE.
|
virtualinherited |
References gcc_checking_assert, NULL_TREE, r, range_query::range_on_exit(), value_range::supports_type_p(), and TREE_TYPE.
|
protected |
Referenced by assume_query(), assume_range_p(), calculate_op(), calculate_phi(), and range_of_expr().
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Referenced by range_query::create_relation_oracle(), range_query::destroy_relation_oracle(), ranger_cache::dump_bb(), ranger_cache::fill_block_cache(), path_range_query::get_path_oracle(), path_range_query::maybe_register_phi_relation(), path_range_query::path_range_query(), path_range_query::path_range_query(), range_query::range_query(), range_query::relation(), range_query::share_query(), and path_range_query::~path_range_query().
|
protectedinherited |
Referenced by range_query::range_query(), range_query::share_query(), and range_query::~range_query().