GCC Middle and Back End API Reference
|
#include <ipa-fnsummary.h>
Public Member Functions | |
ipa_call_context (cgraph_node *node, clause_t possible_truths, clause_t nonspec_possible_truths, vec< inline_param_summary > inline_param_summary, ipa_auto_call_arg_values *arg_values) | |
ipa_call_context () | |
void | estimate_size_and_time (ipa_call_estimates *estimates, bool est_times=true, bool est_hints=true) |
bool | equal_to (const ipa_call_context &) |
bool | exists_p () |
This object describe a context of call. That is a summary of known information about its parameters. Main purpose of this context is to give more realistic estimations of function runtime, size and inline hints.
ipa_call_context::ipa_call_context | ( | cgraph_node * | node, |
clause_t | possible_truths, | ||
clause_t | nonspec_possible_truths, | ||
vec< inline_param_summary > | inline_param_summary, | ||
ipa_auto_call_arg_values * | arg_values ) |
Main constructor for ipa call context. Memory allocation of ARG_VALUES is owned by the caller. INLINE_PARAM_SUMMARY is also owned by the caller.
References m_avals, m_inline_param_summary, m_node, m_nonspec_possible_truths, and m_possible_truths.
Referenced by ipa_cached_call_context::duplicate_from(), and equal_to().
bool ipa_call_context::equal_to | ( | const ipa_call_context & | ctx | ) |
Return true if CTX describes the same call context as THIS.
References equal_to(), i, ipa_call_context(), ipa_get_param_count(), ipa_is_param_used_by_indirect_call(), ipa_is_param_used_by_ipa_predicates(), ipa_is_param_used_by_polymorphic_call(), ipa_node_params_sum, m_avals, m_inline_param_summary, ipa_call_arg_values::m_known_aggs, ipa_call_arg_values::m_known_contexts, ipa_call_arg_values::m_known_vals, m_node, m_nonspec_possible_truths, m_possible_truths, and operand_equal_p().
Referenced by do_estimate_edge_time(), and equal_to().
void ipa_call_context::estimate_size_and_time | ( | ipa_call_estimates * | estimates, |
bool | est_times = true, | ||
bool | est_hints = true ) |
Fill in the selected fields in ESTIMATES with value estimated for call in this context. Always compute size and min_size. Only compute time and nonspecialized_time if EST_TIMES is true. Only compute hints if EST_HINTS is true.
References ipa_fn_summary::builtin_constant_p_parms, ipa_fn_summary::conds, DECL_DECLARED_INLINE_P, dump_condition(), dump_file, dump_flags, estimate_calls_size_and_time(), ipa_predicate::evaluate(), size_time_entry::exec_predicate, ipa_predicate::first_dynamic_condition, ipa_freqcounting_predicate::freq, gcc_checking_assert, ipa_call_estimates::hints, i, INLINE_HINT_builtin_constant_p, INLINE_HINT_declared_inline, INLINE_HINT_in_scc, INLINE_HINT_loop_iterations, INLINE_HINT_loop_stride, ipa_fn_summaries, ipa_fn_summary::loop_iterations, ipa_fn_summary::loop_strides, ipa_call_estimates::loops_with_known_iterations, ipa_call_estimates::loops_with_known_strides, m_avals, m_inline_param_summary, m_node, m_nonspec_possible_truths, m_possible_truths, ipa_call_estimates::min_size, size_time_entry::nonconst_predicate, ipa_call_estimates::nonspecialized_time, ipa_predicate::not_inlined_condition, NULL, ipa_freqcounting_predicate::predicate, ipa_predicate::probability(), RDIV, REG_BR_PROB_BASE, ipa_fn_summary::scc_no, ipa_call_estimates::size, size_time_entry::size, ipa_fn_summary::size_scale, ipa_fn_summary::size_time_table, TDF_DETAILS, ipa_call_estimates::time, size_time_entry::time, sreal::to_double(), vec_safe_iterate(), and vec_safe_length().
Referenced by do_estimate_edge_hints(), do_estimate_edge_size(), do_estimate_edge_time(), and estimate_ipcp_clone_size_and_time().
|
inline |
Referenced by do_estimate_edge_time().
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by ipa_cached_call_context::duplicate_from(), equal_to(), estimate_size_and_time(), and ipa_call_context().
|
private |
Referenced by ipa_cached_call_context::duplicate_from(), equal_to(), estimate_size_and_time(), and ipa_call_context().