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"
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(), irange::set_varying(), 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-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.
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 gori_compute::edge_range_p(), and ranger_cache::range_of_def().
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 ) |
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(), 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().