GCC Middle and Back End API Reference
|
#include <gimple-range.h>
Protected Member Functions | |
DISABLE_COPY_AND_ASSIGN (dom_ranger) | |
void | maybe_push_edge (edge e, bool edge_0) |
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) |
Protected Attributes | |
ssa_cache | m_global |
gimple_outgoing_range | m_out |
vec< ssa_lazy_cache * > | m_freelist |
vec< ssa_lazy_cache * > | m_e0 |
vec< ssa_lazy_cache * > | m_e1 |
bitmap | m_pop_list |
range_tracer | tracer |
relation_oracle * | m_oracle |
dom_ranger::dom_ranger | ( | ) |
References BITMAP_ALLOC, cfun, dump_file, range_tracer::enable_trace(), ggc_alloc(), last_basic_block_for_fn, m_e0, m_e1, m_freelist, m_pop_list, NULL, RANGER_DEBUG_TRACE, and tracer.
dom_ranger::~dom_ranger | ( | ) |
References BITMAP_FREE, ssa_cache::dump(), dump_file, dump_flags, ggc_alloc(), m_e0, m_e1, m_freelist, m_global, m_pop_list, and TDF_DETAILS.
|
protected |
Reimplemented in path_range_query, assume_query, ranger_cache, gimple_ranger, and ssa_cache.
References EDGE_SUCC, ssa_lazy_cache::get_range(), ggc_alloc(), ssa_lazy_cache::has_range(), basic_block_def::index, m_e0, m_e1, NULL, and r.
Referenced by range_in_bb(), and range_on_edge().
|
protectedinherited |
References BINARY_CLASS_P, COMPARISON_CLASS_P, drop_tree_overflow(), expr, range_op_handler::fold_range(), ggc_alloc(), 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::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 assume_query::calculate_phi(), assume_query::range_of_expr(), global_range_query::range_of_expr(), range_of_expr(), ssa_cache::range_of_expr(), gimple_ranger::range_of_expr(), ranger_cache::range_of_expr(), gimple_ranger::range_of_stmt(), ranger_cache::range_on_edge(), range_on_edge(), gimple_ranger::range_on_edge(), gimple_ranger::range_on_entry(), and gimple_ranger::range_on_exit().
|
protectedinherited |
References gcc_checking_assert, ggc_alloc(), r, range_query::range_of_expr(), range_query::range_on_entry(), and range_query::range_on_exit().
Referenced by range_query::get_tree_range().
References ggc_alloc(), gori_on_edge(), m_e0, m_e1, m_freelist, and m_out.
Referenced by pre_bb().
|
inlineinherited |
void dom_ranger::post_bb | ( | basic_block | bb | ) |
Referenced by fvrp_folder::post_fold_bb().
void dom_ranger::pre_bb | ( | basic_block | bb | ) |
References dump_file, dump_flags, EDGE_SUCC, ggc_alloc(), gsi_end_p(), gsi_last_nondebug_bb(), gsi_stmt(), basic_block_def::index, m_e0, m_e1, maybe_push_edge(), gimple_range_op_handler::supported_p(), and TDF_DETAILS.
Referenced by fvrp_folder::pre_fold_bb().
|
inherited |
References get_range(), ggc_alloc(), gimple_bb(), range_query::m_oracle, relation_oracle::query_relation(), range_query::range_of_expr(), TREE_CODE, TREE_TYPE, and VREL_VARYING.
Referenced by fur_stmt::query_relation(), and fold_using_range::range_of_phi().
void dom_ranger::range_in_bb | ( | vrange & | r, |
basic_block | bb, | ||
tree | name ) |
References CDI_DOMINATORS, cfun, EDGE_COUNT, EDGE_PRED, edge_range(), ENTRY_BLOCK_PTR_FOR_FN, get_immediate_dominator(), ggc_alloc(), gimple_bb(), m_global, basic_block_def::preds, r, ssa_cache::range_of_expr(), and SSA_NAME_DEF_STMT.
Referenced by range_of_expr(), and range_on_edge().
Reimplemented from range_query.
References Value_Range::dump(), dump_file, dump_flags, EDGE_SUCC, fold_range(), fputc(), gcc_checking_assert, get_range(), ggc_alloc(), gimple_bb(), gimple_get_lhs(), gimple_range_ssa_p(), ssa_cache::has_range(), range_tracer::header(), basic_block_def::index, m_e0, m_e1, m_global, ssa_cache::merge_range(), print_generic_expr(), print_gimple_stmt(), r, ssa_cache::range_of_expr(), set_range_info(), TDF_DETAILS, TDF_SLIM, tracer, range_tracer::trailer(), and TREE_TYPE.
Referenced by fvrp_folder::pre_fold_bb(), and fvrp_folder::pre_fold_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 from range_query.
References dump_file, edge_range(), fputc(), range_query::get_tree_range(), ggc_alloc(), gimple_range_ssa_p(), range_tracer::header(), NULL, print_generic_expr(), r, range_in_bb(), TDF_SLIM, tracer, and range_tracer::trailer().
|
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_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().
Reimplemented in substitute_and_fold_engine, copy_folder, rvrp_folder, fvrp_folder, and ccp_folder.
References NULL_TREE, r, range_query::range_of_expr(), Value_Range::supports_type_p(), and TREE_TYPE.
Referenced by rvrp_folder::value_of_expr(), and fvrp_folder::value_of_expr().
Reimplemented in substitute_and_fold_engine, rvrp_folder, and fvrp_folder.
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 rvrp_folder::value_of_stmt(), and fvrp_folder::value_of_stmt().
Reimplemented in rvrp_folder, fvrp_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 rvrp_folder::value_on_edge(), and fvrp_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 dom_ranger(), edge_range(), maybe_push_edge(), pre_bb(), range_of_stmt(), and ~dom_ranger().
|
protected |
Referenced by dom_ranger(), edge_range(), maybe_push_edge(), pre_bb(), range_of_stmt(), and ~dom_ranger().
|
protected |
Referenced by dom_ranger(), maybe_push_edge(), and ~dom_ranger().
|
protected |
Referenced by range_in_bb(), range_of_expr(), range_of_stmt(), and ~dom_ranger().
|
protectedinherited |
Referenced by ranger_cache::dump_bb(), ranger_cache::fill_block_cache(), path_range_query::get_path_oracle(), gimple_ranger::gimple_ranger(), path_range_query::maybe_register_phi_relation(), range_query::oracle(), path_range_query::path_range_query(), path_range_query::path_range_query(), range_query::query_relation(), range_query::query_relation(), range_query::range_query(), ranger_cache::ranger_cache(), path_range_query::~path_range_query(), and ranger_cache::~ranger_cache().
|
protected |
Referenced by maybe_push_edge().
|
protected |
Referenced by dom_ranger(), and ~dom_ranger().
|
protected |
Referenced by dom_ranger(), range_of_expr(), range_of_stmt(), and range_on_edge().