GCC Middle and Back End API Reference
gimple-range-fold.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  fur_source
 
class  fur_stmt
 
class  fur_depend
 
class  fur_edge
 
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)
 

Function Documentation

◆ fold_range() [1/5]

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.

◆ fold_range() [2/5]

bool fold_range ( vrange & r,
gimple * s,
unsigned num_elements,
vrange ** vector,
range_query * q = NULL )

References fold_using_range::fold_stmt(), and r.

◆ fold_range() [3/5]

bool fold_range ( vrange & r,
gimple * s,
vrange & r1,
range_query * q = NULL )

◆ fold_range() [4/5]

bool fold_range ( vrange & r,
gimple * s,
vrange & r1,
vrange & r2,
range_query * q = NULL )

References fold_using_range::fold_stmt(), and r.

◆ fold_range() [5/5]

bool fold_range ( vrange & v,
gimple * s,
edge on_edge,
range_query * q = NULL )

References fold_using_range::fold_stmt(), and r.

◆ fold_relations()

◆ gimple_range_ssa_p()

tree gimple_range_ssa_p ( tree exp)
inline

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(), 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(), 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().

◆ gimple_range_type()

◆ op1_range() [1/2]

◆ op1_range() [2/2]

bool op1_range ( vrange & r,
gimple * s,
range_query * q = NULL )

◆ op2_range() [1/2]

◆ op2_range() [2/2]

bool op2_range ( vrange & r,
gimple * s,
range_query * q = NULL )