GCC Middle and Back End API Reference
|
#include <gimple-range-edge.h>
Public Member Functions | |
gimple_outgoing_range (int max_sw_edges=0) | |
virtual | ~gimple_outgoing_range () |
gimple * | edge_range_p (irange &r, edge e) |
void | set_switch_limit (int max_sw_edges=INT_MAX) |
virtual bool | edge_range_p (vrange &, edge, tree, range_query &) |
virtual bool | has_edge_range_p (tree, basic_block=NULL) |
virtual bool | has_edge_range_p (tree, edge) |
virtual void | dump (FILE *) |
virtual bool | compute_operand_range (vrange &, gimple *, const vrange &, tree, class fur_source &, class value_relation *=NULL) |
Private Member Functions | |
void | calc_switch_ranges (gswitch *sw) |
bool | switch_edge_range (irange &r, gswitch *sw, edge e) |
Private Attributes | |
int | m_max_edges |
hash_map< edge, vrange_storage * > * | m_edge_table |
class vrange_allocator * | m_range_allocator |
Gimple range edge header file. Copyright (C) 2020-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/>.
gimple_outgoing_range::gimple_outgoing_range | ( | int | max_sw_edges = 0 | ) |
References m_edge_table, m_max_edges, m_range_allocator, and NULL.
|
virtual |
References m_edge_table, and m_range_allocator.
|
private |
References CASE_HIGH, CASE_LOW, cfun, vrange_allocator::clone(), gcc_checking_assert, hash_map< KeyId, Value, Traits >::get_or_insert(), gimple_switch_default_edge(), gimple_switch_edge(), gimple_switch_index(), gimple_switch_label(), gimple_switch_num_labels(), irange::intersect(), irange::invert(), m_edge_table, m_range_allocator, range_cast(), irange::set_undefined(), wi::to_wide(), TREE_TYPE, irange::union_(), and vrange::varying_p().
Referenced by switch_edge_range().
|
inlinevirtual |
Reimplemented in gori_compute.
Referenced by assume_query::calculate_op(), and fold_using_range::condexpr_adjust().
|
inlinevirtual |
Reimplemented in gori_compute.
References as_a(), EDGE_COUNT, gcc_checking_assert, gcond_edge_range(), gimple_outgoing_range_stmt_p(), is_a(), m_max_edges, NULL, r, single_succ_p(), and switch_edge_range().
Referenced by gori_compute::edge_range_p(), evaluate_control_stmt_using_entry_checks(), and gori_on_edge().
|
inlinevirtual |
Reimplemented in gori_compute.
|
inlinevirtual |
Reimplemented in gori_compute.
Reimplemented in gori_compute.
void gimple_outgoing_range::set_switch_limit | ( | int | max_sw_edges = INT_MAX | ) |
References m_max_edges.
References calc_switch_ranges(), CASE_LOW, cfun, gcc_checking_assert, hash_map< KeyId, Value, Traits >::get(), vrange_storage::get_vrange(), gimple_switch_index(), gimple_switch_label(), gimple_switch_num_labels(), m_edge_table, m_range_allocator, n_edges_for_fn, r, TREE_TYPE, and TYPE_PRECISION.
Referenced by edge_range_p().
|
private |
Referenced by calc_switch_ranges(), gimple_outgoing_range(), switch_edge_range(), and ~gimple_outgoing_range().
|
private |
Referenced by edge_range_p(), gimple_outgoing_range(), and set_switch_limit().
|
private |
Referenced by calc_switch_ranges(), gimple_outgoing_range(), switch_edge_range(), and ~gimple_outgoing_range().