GCC Middle and Back End API Reference
|
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "tree.h"
#include "cgraph.h"
#include "tree-vrp.h"
#include "alloc-pool.h"
#include "symbol-summary.h"
#include "sreal.h"
#include "ipa-cp.h"
#include "ipa-prop.h"
#include "ipa-fnsummary.h"
#include "real.h"
#include "fold-const.h"
#include "tree-pretty-print.h"
#include "gimple.h"
#include "gimplify.h"
#include "data-streamer.h"
Functions | |
static bool | expr_eval_ops_equal_p (expr_eval_ops ops1, expr_eval_ops ops2) |
void | dump_condition (FILE *f, conditions conditions, int cond) |
static void | dump_clause (FILE *f, conditions conds, clause_t clause) |
ipa_predicate | add_condition (class ipa_fn_summary *summary, class ipa_node_params *params_summary, int operand_num, tree type, struct agg_position_info *aggpos, enum tree_code code, tree val, expr_eval_ops param_ops) |
ipa_predicate add_condition | ( | class ipa_fn_summary * | summary, |
class ipa_node_params * | params_summary, | ||
int | operand_num, | ||
tree | type, | ||
struct agg_position_info * | aggpos, | ||
enum tree_code | code, | ||
tree | val, | ||
expr_eval_ops | param_ops ) |
Add condition to condition list SUMMARY. OPERAND_NUM, TYPE, CODE, VAL and PARAM_OPS correspond to fields of condition structure. AGGPOS describes whether the used operand is loaded from an aggregate and where in the aggregate it is. It can be NULL, which means this not a load from an aggregate.
References agg_position_info::agg_contents, condition::agg_contents, agg_position_info::by_ref, condition::by_ref, condition::code, ipa_fn_summary::conds, expr_eval_ops_equal_p(), ipa_predicate::first_dynamic_condition, gcc_checking_assert, i, ipa_set_param_used_by_ipa_predicates(), ipa_predicate::num_conditions, agg_position_info::offset, condition::offset, offset, condition::operand_num, condition::param_ops, ipa_predicate::predicate_testing_cond(), condition::type, types_compatible_p(), unshare_expr_without_location(), condition::val, expr_eval_op::val, vec_safe_copy(), vec_safe_iterate(), vec_safe_push(), and vrp_operand_equal_p().
Referenced by analyze_function_body(), ipa_predicate::remap_after_inlining(), set_cond_stmt_execution_predicate(), set_switch_stmt_execution_predicate(), will_be_nonconstant_expr_predicate(), and will_be_nonconstant_predicate().
|
static |
Dump clause CLAUSE.
References dump_condition(), i, and ipa_predicate::num_conditions.
Referenced by ipa_predicate::dump().
void dump_condition | ( | FILE * | f, |
conditions | conditions, | ||
int | cond ) |
Dump conditional COND.
References condition::agg_contents, condition::by_ref, CASE_CONVERT, ipa_predicate::changed, condition::code, expr_eval_op::code, ipa_predicate::false_condition, ipa_predicate::first_dynamic_condition, get_tree_code_name(), HOST_WIDE_INT_PRINT_DEC, i, expr_eval_op::index, ipa_predicate::is_not_constant, ipa_predicate::not_inlined_condition, ipa_predicate::not_sra_candidate, condition::offset, op_symbol_code(), condition::operand_num, condition::param_ops, print_generic_expr(), expr_eval_op::type, condition::val, expr_eval_op::val, and vec_safe_length().
Referenced by dump_clause(), and ipa_call_context::estimate_size_and_time().
|
static |
IPA predicates. Copyright (C) 2003-2024 Free Software Foundation, Inc. Contributed by Jan Hubicka 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/>.
Check whether two set of operations have same effects.
References expr_eval_op::code, i, expr_eval_op::index, expr_eval_op::type, types_compatible_p(), expr_eval_op::val, and vrp_operand_equal_p().
Referenced by ipa_predicate::add_clause(), and add_condition().