|
GCC Middle and Back End API Reference
|
#include "config.h"#include "system.h"#include "coretypes.h"#include "backend.h"#include "insn-codes.h"#include "tree.h"#include "gimple.h"#include "ssa.h"#include "gimple-pretty-print.h"#include "optabs-tree.h"#include "gimple-iterator.h"#include "gimple-fold.h"#include "wide-int.h"#include "fold-const.h"#include "case-cfn-macros.h"#include "omp-general.h"#include "cfgloop.h"#include "tree-ssa-loop.h"#include "tree-scalar-evolution.h"#include "langhooks.h"#include "vr-values.h"#include "range.h"#include "value-query.h"#include "gimple-range-op.h"#include "gimple-range.h"#include "cgraph.h"#include "alloc-pool.h"#include "symbol-summary.h"#include "ipa-utils.h"#include "sreal.h"#include "ipa-cp.h"#include "ipa-prop.h"#include "rtl.h"
Data Structures | |
| class | fur_list |
| class | fur_relation |
Functions | |
| bool | fold_range (vrange &r, gimple *s, vrange &r1, range_query *q) |
| bool | fold_range (vrange &r, gimple *s, vrange &r1, vrange &r2, range_query *q) |
| bool | fold_range (vrange &r, gimple *s, unsigned num_elements, vrange **vector, range_query *q) |
| bool | fold_range (vrange &r, gimple *s, range_query *q) |
| bool | fold_range (vrange &r, gimple *s, edge on_edge, range_query *q) |
| bool | op1_range (vrange &r, gimple *s, const vrange &lhs, range_query *q) |
| bool | op1_range (vrange &r, gimple *s, range_query *q) |
| bool | op2_range (vrange &r, gimple *s, const vrange &lhs, range_query *q) |
| bool | op2_range (vrange &r, gimple *s, range_query *q) |
| relation_trio | fold_relations (gimple *s, range_query *q) |
| static void | adjust_pointer_diff_expr (irange &res, const gimple *diff_stmt) |
| static void | adjust_imagpart_expr (vrange &res, const gimple *stmt) |
| static void | adjust_realpart_expr (vrange &res, const gimple *stmt) |
| static void | gimple_range_adjustment (vrange &res, const gimple *stmt) |
References boolean_type_node, gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs_code(), gimple_call_internal_fn(), gimple_call_internal_p(), vrange::intersect(), is_gimple_assign(), is_gimple_call(), r, range_cast(), SSA_NAME_DEF_STMT, wi::to_wide(), TREE_CODE, TREE_IMAGPART, TREE_OPERAND, and TREE_TYPE.
Referenced by gimple_range_adjustment().
References char_type_node, gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_call_arg(), gimple_call_builtin_p(), integer_zerop(), irange::intersect(), irange_val_max(), is_gimple_call(), ptrdiff_type_node, SSA_NAME_DEF_STMT, TREE_CODE, TREE_TYPE, TYPE_MODE, TYPE_PRECISION, vrp_operand_equal_p(), and wi::zero().
Referenced by gimple_range_adjustment().
References gimple_assign_rhs1(), gimple_assign_rhs_code(), vrange::intersect(), is_gimple_assign(), SSA_NAME_DEF_STMT, wi::to_wide(), TREE_CODE, TREE_OPERAND, TREE_REALPART, and TREE_TYPE.
Referenced by gimple_range_adjustment().
| bool fold_range | ( | vrange & | r, |
| gimple * | s, | ||
| edge | on_edge, | ||
| range_query * | q ) |
References fold_using_range::fold_stmt(), and r.
| bool fold_range | ( | vrange & | r, |
| gimple * | s, | ||
| range_query * | q = NULL ) |
Header file for the GIMPLE fold_using_range interface. Copyright (C) 2019-2025 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 ) |
References fold_using_range::fold_stmt(), and r.
| bool fold_range | ( | vrange & | r, |
| gimple * | s, | ||
| vrange & | r1, | ||
| range_query * | q ) |
References fold_using_range::fold_stmt(), and r.
Referenced by phi_group::calculate_using_modifier(), gori_compute::edge_range_p(), evaluate_control_stmt_using_entry_checks(), ranger_cache::get_global_range(), range_cast(), range_cast(), ranger_cache::range_of_def(), path_range_query::range_of_stmt(), and gimple_ranger::register_transitive_inferred_ranges().
References fold_using_range::fold_stmt(), and r.
| relation_trio fold_relations | ( | gimple * | s, |
| range_query * | q ) |
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 adjust_imagpart_expr(), adjust_pointer_diff_expr(), adjust_realpart_expr(), as_a(), and gimple_expr_code().
Referenced by fold_using_range::range_of_range_op().
| bool op1_range | ( | vrange & | r, |
| gimple * | s, | ||
| const vrange & | lhs, | ||
| range_query * | q ) |
References gimple_range_op_handler::calc_op1(), fur_stmt::get_operand(), gimple_range_op_handler::operand2(), r, and TREE_TYPE.
Referenced by compute_distributive_range(), gori_compute::compute_operand1_range(), gori_compute::compute_operand2_range(), gimple_infer_range::gimple_infer_range(), minus_op1_op2_relation_effect(), op1_range(), gori_compute::refine_using_relation(), and split_constant_offset_1().
| bool op1_range | ( | vrange & | r, |
| gimple * | s, | ||
| range_query * | q ) |
References gimple_range_type(), op1_range(), r, and value_range::set_varying().
| bool op2_range | ( | vrange & | r, |
| gimple * | s, | ||
| const vrange & | lhs, | ||
| range_query * | q ) |
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(), minus_op1_op2_relation_effect(), op2_range(), and gori_compute::refine_using_relation().
| bool op2_range | ( | vrange & | r, |
| gimple * | s, | ||
| range_query * | q ) |
References gimple_range_type(), op2_range(), r, and value_range::set_varying().