21#ifndef GCC_IPA_SUMMARY_H
22#define GCC_IPA_SUMMARY_H
129 fp_expressions (
false), safe_to_inline_to_always_inline (0),
131 time (0), conds (
NULL),
132 size_time_table (), call_size_time_table (
vNULL),
133 loop_iterations (
NULL), loop_strides (
NULL),
134 builtin_constant_p_parms (
vNULL),
135 growth (0), scc_no (0)
141 : min_size (s.min_size),
142 inlinable (s.inlinable), single_caller (s.single_caller),
143 fp_expressions (s.fp_expressions),
145 estimated_stack_size (s.estimated_stack_size),
146 time (s.time), conds (s.conds), size_time_table (),
147 call_size_time_table (
vNULL),
148 loop_iterations (s.loop_iterations), loop_strides (s.loop_strides),
149 builtin_constant_p_parms (s.builtin_constant_p_parms),
150 growth (s.growth), scc_no (s.scc_no)
218 static const int size_scale = 2;
220 static const int max_size_time_table_size = 256;
234 summary->disable_insertion_hook ();
244 remove_callees (node);
262 disable_insertion_hook ();
269 *dst_data = *src_data;
272extern fast_function_summary <ipa_size_summary *, va_heap>
372 bool est_times =
true,
bool est_hints =
true);
432 bool compute_contexts);
445 if (
edge->caller->unit_id ==
edge->callee->unit_id)
449 if (
edge->callee->merged_extern_inline ||
edge->callee->merged_comdat
symbol_table * symtab
Definition cgraph.cc:81
Definition symbol-summary.h:827
Definition symbol-summary.h:358
Definition ipa-prop.h:503
Definition ipa-fnsummary.h:401
void release()
Definition ipa-fnsummary.cc:3868
void duplicate_from(const ipa_call_context &ctx)
Definition ipa-fnsummary.cc:3796
Definition ipa-prop.h:539
Definition ipa-fnsummary.h:360
clause_t m_possible_truths
Definition ipa-fnsummary.h:383
vec< inline_param_summary > m_inline_param_summary
Definition ipa-fnsummary.h:388
cgraph_node * m_node
Definition ipa-fnsummary.h:380
bool equal_to(const ipa_call_context &)
Definition ipa-fnsummary.cc:3882
friend ipa_cached_call_context
Definition ipa-fnsummary.h:394
void estimate_size_and_time(ipa_call_estimates *estimates, bool est_times=true, bool est_hints=true)
Definition ipa-fnsummary.cc:4038
ipa_call_context()
Definition ipa-fnsummary.h:367
bool exists_p()
Definition ipa-fnsummary.h:374
clause_t m_nonspec_possible_truths
Definition ipa-fnsummary.h:386
ipa_call_arg_values m_avals
Definition ipa-fnsummary.h:392
Definition ipa-fnsummary.h:311
ipa_call_summary_t(symbol_table *symtab)
Definition ipa-fnsummary.h:313
void duplicate(cgraph_edge *src, cgraph_edge *dst, ipa_call_summary *src_data, ipa_call_summary *dst_data) final override
Definition ipa-fnsummary.cc:981
Definition ipa-fnsummary.h:277
bool is_return_callee_uncaptured
Definition ipa-fnsummary.h:307
unsigned int loop_depth
Definition ipa-fnsummary.h:305
int call_stmt_time
Definition ipa-fnsummary.h:303
ipa_call_summary(const ipa_call_summary &s)
Definition ipa-fnsummary.h:288
ipa_predicate * predicate
Definition ipa-fnsummary.h:298
~ipa_call_summary()
Definition ipa-fnsummary.cc:754
int call_stmt_size
Definition ipa-fnsummary.h:302
vec< inline_param_summary > param
Definition ipa-fnsummary.h:300
ipa_call_summary()
Definition ipa-fnsummary.h:281
Definition ipa-fnsummary.h:225
static ipa_fn_summary_t * create_ggc(symbol_table *symtab)
Definition ipa-fnsummary.h:230
ipa_fn_summary_t(symbol_table *symtab)
Definition ipa-fnsummary.h:227
void remove_callees(cgraph_node *node)
Definition ipa-fnsummary.cc:778
void duplicate(cgraph_node *src, cgraph_node *dst, ipa_fn_summary *src_data, ipa_fn_summary *dst_data) final override
Definition ipa-fnsummary.cc:819
void remove(cgraph_node *node, ipa_fn_summary *) final override
Definition ipa-fnsummary.h:242
Definition ipa-fnsummary.h:122
unsigned int target_info
Definition ipa-fnsummary.h:173
int scc_no
Definition ipa-fnsummary.h:210
static const int size_scale
Definition ipa-fnsummary.h:218
unsigned int safe_to_inline_to_always_inline
Definition ipa-fnsummary.h:169
HOST_WIDE_INT estimated_stack_size
Definition ipa-fnsummary.h:180
conditions conds
Definition ipa-fnsummary.h:186
vec< size_time_entry, va_heap, vl_ptr > call_size_time_table
Definition ipa-fnsummary.h:195
static const int max_size_time_table_size
Definition ipa-fnsummary.h:220
ipa_fn_summary(const ipa_fn_summary &s)
Definition ipa-fnsummary.h:140
sreal time
Definition ipa-fnsummary.h:182
void account_size_time(int, sreal, const ipa_predicate &, const ipa_predicate &, bool call=false)
Definition ipa-fnsummary.cc:167
int growth
Definition ipa-fnsummary.h:208
auto_vec< size_time_entry > size_time_table
Definition ipa-fnsummary.h:191
unsigned inlinable
Definition ipa-fnsummary.h:162
~ipa_fn_summary()
Definition ipa-fnsummary.cc:762
vec< ipa_freqcounting_predicate, va_gc > * loop_strides
Definition ipa-fnsummary.h:200
unsigned int fp_expressions
Definition ipa-fnsummary.h:167
int min_size
Definition ipa-fnsummary.h:159
vec< ipa_freqcounting_predicate, va_gc > * loop_iterations
Definition ipa-fnsummary.h:198
ipa_fn_summary()
Definition ipa-fnsummary.h:126
unsigned int single_caller
Definition ipa-fnsummary.h:165
vec< int, va_heap, vl_ptr > builtin_constant_p_parms
Definition ipa-fnsummary.h:202
Definition ipa-predicate.h:119
Definition ipa-fnsummary.h:257
ipa_size_summary_t(symbol_table *symtab)
Definition ipa-fnsummary.h:259
void duplicate(cgraph_node *, cgraph_node *, ipa_size_summary *src_data, ipa_size_summary *dst_data) final override
Definition ipa-fnsummary.h:265
Definition ipa-fnsummary.h:92
int size
Definition ipa-fnsummary.h:99
HOST_WIDE_INT estimated_self_stack_size
Definition ipa-fnsummary.h:95
ipa_size_summary()
Definition ipa-fnsummary.h:101
int self_size
Definition ipa-fnsummary.h:97
Definition genmatch.cc:1485
Definition ipa-fnsummary.h:76
int size
Definition ipa-fnsummary.h:84
ipa_predicate exec_predicate
Definition ipa-fnsummary.h:79
sreal time
Definition ipa-fnsummary.h:85
ipa_predicate nonconst_predicate
Definition ipa-fnsummary.h:83
class edge_def * edge
Definition coretypes.h:352
#define GTY(x)
Definition coretypes.h:41
union tree_node * tree
Definition coretypes.h:97
T * ggc_alloc_no_dtor(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:200
void ipa_remove_from_growth_caches(struct cgraph_edge *edge)
Definition ipa-inline-analysis.cc:304
void ipa_dump_fn_summaries(FILE *f)
Definition ipa-fnsummary.cc:1183
void ipa_free_fn_summary(void)
Definition ipa-fnsummary.cc:5104
HOST_WIDE_INT ipa_get_stack_frame_offset(struct cgraph_node *node)
Definition ipa-fnsummary.cc:4218
fast_function_summary< ipa_size_summary *, va_heap > * ipa_size_summaries
Definition ipa-fnsummary.cc:96
bool points_to_local_or_readonly_memory_p(tree)
Definition ipa-fnsummary.cc:2631
bool cross_module_call_p(struct cgraph_edge *edge)
Definition ipa-fnsummary.h:441
void ipa_update_overall_fn_summary(struct cgraph_node *node, bool reset=true)
Definition ipa-fnsummary.cc:4559
void ipa_dump_fn_summary(FILE *f, struct cgraph_node *node)
Definition ipa-fnsummary.cc:1090
void estimate_ipcp_clone_size_and_time(struct cgraph_node *node, ipa_auto_call_arg_values *avals, ipa_call_estimates *estimates)
Definition ipa-fnsummary.cc:4201
void ipa_free_size_summary(void)
Definition ipa-fnsummary.cc:5121
void ipa_debug_fn_summary(struct cgraph_node *)
Definition ipa-fnsummary.cc:1177
fast_call_summary< ipa_call_summary *, va_heap > * ipa_call_summaries
Definition ipa-fnsummary.cc:97
ipa_hints_vals
Definition ipa-fnsummary.h:30
@ INLINE_HINT_declared_inline
Definition ipa-fnsummary.h:46
@ INLINE_HINT_known_hot
Definition ipa-fnsummary.h:52
@ INLINE_HINT_same_scc
Definition ipa-fnsummary.h:40
@ INLINE_HINT_in_scc
Definition ipa-fnsummary.h:43
@ INLINE_HINT_builtin_constant_p
Definition ipa-fnsummary.h:55
@ INLINE_HINT_loop_iterations
Definition ipa-fnsummary.h:36
@ INLINE_HINT_loop_stride
Definition ipa-fnsummary.h:37
@ INLINE_HINT_cross_module
Definition ipa-fnsummary.h:50
@ INLINE_HINT_indirect_call
Definition ipa-fnsummary.h:33
void evaluate_properties_for_edge(struct cgraph_edge *e, bool inline_p, clause_t *clause_ptr, clause_t *nonspec_clause_ptr, ipa_auto_call_arg_values *avals, bool compute_contexts)
Definition ipa-fnsummary.cc:601
void ipa_dump_hints(FILE *f, ipa_hints)
Definition ipa-fnsummary.cc:105
bool refs_local_or_readonly_memory_p(tree)
Definition ipa-fnsummary.cc:2607
fast_function_summary< ipa_fn_summary *, va_gc > * ipa_fn_summaries
Definition ipa-fnsummary.cc:95
void ipa_merge_fn_summary_after_inlining(struct cgraph_edge *edge)
Definition ipa-fnsummary.cc:4412
void compute_fn_summary(struct cgraph_node *, bool)
Definition ipa-fnsummary.cc:3356
void inline_analyze_function(struct cgraph_node *node)
Definition ipa-fnsummary.cc:4604
int ipa_hints
Definition ipa-fnsummary.h:58
void ipa_fnsummary_cc_finalize(void)
Definition ipa-fnsummary.cc:5278
uint32_t clause_t
Definition ipa-predicate.h:117
Definition ipa-fnsummary.h:66
HOST_WIDE_INT offset
Definition ipa-fnsummary.h:67
bool agg_contents
Definition ipa-fnsummary.h:68
bool by_ref
Definition ipa-fnsummary.h:69
Definition ipa-predicate.h:71
Definition ipa-fnsummary.h:326
sreal loops_with_known_iterations
Definition ipa-fnsummary.h:346
int min_size
Definition ipa-fnsummary.h:332
ipa_hints hints
Definition ipa-fnsummary.h:342
sreal loops_with_known_strides
Definition ipa-fnsummary.h:350
sreal nonspecialized_time
Definition ipa-fnsummary.h:339
int size
Definition ipa-fnsummary.h:328
sreal time
Definition ipa-fnsummary.h:335
Definition ipa-fnsummary.h:113
sreal freq
Definition ipa-fnsummary.h:115
ipa_predicate * predicate
Definition ipa-fnsummary.h:117
Definition resource.cc:41
#define NULL
Definition system.h:50
#define false
Definition system.h:888
static void insert(void)
Definition tree-ssa-pre.cc:3804
#define DECL_COMDAT(NODE)
Definition tree.h:3214
constexpr vnull vNULL
Definition vec.h:569