GCC Middle and Back End API Reference
|
#include <ipa-fnsummary.h>
Public Member Functions | |
ipa_fn_summary () | |
ipa_fn_summary (const ipa_fn_summary &s) | |
~ipa_fn_summary () | |
void | account_size_time (int, sreal, const ipa_predicate &, const ipa_predicate &, bool call=false) |
Data Fields | |
int | min_size |
unsigned | inlinable: 1 |
unsigned int | single_caller: 1 |
unsigned int | fp_expressions: 1 |
unsigned int | safe_to_inline_to_always_inline: 2 |
unsigned int | target_info |
HOST_WIDE_INT | estimated_stack_size |
sreal | time |
conditions | conds |
auto_vec< size_time_entry > | size_time_table |
vec< size_time_entry, va_heap, vl_ptr > | call_size_time_table |
vec< ipa_freqcounting_predicate, va_gc > * | loop_iterations |
vec< ipa_freqcounting_predicate, va_gc > * | loop_strides |
vec< int, va_heap, vl_ptr > | builtin_constant_p_parms |
int | growth |
int | scc_no |
Static Public Attributes | |
static const int | size_scale = 2 |
static const int | max_size_time_table_size = 256 |
Function inlining information.
|
inline |
|
inline |
ipa_fn_summary::~ipa_fn_summary | ( | ) |
References builtin_constant_p_parms, call_size_time_table, conds, edge_predicate_pool, i, loop_iterations, loop_strides, vec_free(), and vec_safe_length().
void ipa_fn_summary::account_size_time | ( | int | size, |
sreal | time, | ||
const ipa_predicate & | exec_pred, | ||
const ipa_predicate & | nonconst_pred_in, | ||
bool | call = false ) |
Record SIZE and TIME to SUMMARY. The accounted code will be executed when EXEC_PRED is true. When NONCONST_PRED is false the code will evaluate to constant and will get optimized out in specialized clones of the function. If CALL is true account to call_size_time_table rather than size_time_table.
References call_size_time_table, conds, ipa_predicate::dump(), dump_file, dump_flags, size_time_entry::exec_predicate, gcc_checking_assert, i, max_size_time_table_size, size_time_entry::nonconst_predicate, size_time_entry::size, size_scale, size_time_table, table, TDF_DETAILS, time, size_time_entry::time, and sreal::to_double().
Referenced by analyze_function_body(), compute_fn_summary(), ipa_fn_summary_t::duplicate(), estimate_calls_size_and_time(), ipa_merge_fn_summary_after_inlining(), and summarize_calls_size_and_time().
vec<size_time_entry, va_heap, vl_ptr> ipa_fn_summary::call_size_time_table |
conditions ipa_fn_summary::conds |
Referenced by account_size_time(), add_condition(), compute_bb_predicates(), dump_ipa_call_summary(), ipa_fn_summary_t::duplicate(), ipa_call_context::estimate_size_and_time(), evaluate_conditions_for_known_args(), evaluate_properties_for_edge(), inline_read_section(), ipa_dump_fn_summary(), ipa_fn_summary_write(), ipa_merge_fn_summary_after_inlining(), predicate_for_phi_result(), ipa_predicate::remap_after_inlining(), set_switch_stmt_execution_predicate(), will_be_nonconstant_expr_predicate(), will_be_nonconstant_predicate(), and ~ipa_fn_summary().
HOST_WIDE_INT ipa_fn_summary::estimated_stack_size |
unsigned int ipa_fn_summary::fp_expressions |
int ipa_fn_summary::growth |
Referenced by edge_badness(), inline_small_functions(), and ipa_dump_fn_summary().
unsigned ipa_fn_summary::inlinable |
vec<ipa_freqcounting_predicate, va_gc>* ipa_fn_summary::loop_iterations |
vec<ipa_freqcounting_predicate, va_gc>* ipa_fn_summary::loop_strides |
|
static |
Referenced by account_size_time(), and estimate_calls_size_and_time().
int ipa_fn_summary::min_size |
Referenced by estimate_calls_size_and_time(), ipa_dump_fn_summary(), and ipa_update_overall_fn_summary().
unsigned int ipa_fn_summary::safe_to_inline_to_always_inline |
Referenced by can_early_inline_edge_p().
int ipa_fn_summary::scc_no |
Referenced by ipa_call_context::estimate_size_and_time(), inline_small_functions(), and ipa_dump_fn_summary().
unsigned int ipa_fn_summary::single_caller |
Referenced by edge_badness(), and inline_small_functions().
|
static |
auto_vec<size_time_entry> ipa_fn_summary::size_time_table |
unsigned int ipa_fn_summary::target_info |
sreal ipa_fn_summary::time |