diff options
author | Jan Hubicka <jh@suse.cz> | 2011-04-27 00:05:50 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2011-04-26 22:05:50 +0000 |
commit | 898b8927465614b911841f134f37165a613debf5 (patch) | |
tree | 9dd85417eff67af5337a8aed679418604daf66df /gcc/ipa-inline.h | |
parent | ffa037724f62366e4e78b496f182d999ea7b75ce (diff) | |
download | gcc-898b8927465614b911841f134f37165a613debf5.tar.gz |
cgraphbuild.c (build_cgraph_edges): Update call of cgraph_create_edge and cgraph_create_indirect_edge.
* cgraphbuild.c (build_cgraph_edges): Update call
of cgraph_create_edge and cgraph_create_indirect_edge.
* cgraph.c (cgraph_create_edge_including_clones,
cgraph_create_edge_1, cgraph_allocate_init_indirect_info,
cgraph_update_edges_for_call_stmt_node): Do not take nest
argument; do not initialize call_stmt_size/time.
(dump_cgraph_node): Do not dump nest.
(cgraph_clone_edge): Do not take loop_nest argument;
do not propagate it; do not clone call_stmt_size/time.
(cgraph_clone_node): Likewise.
(cgraph_create_virtual_clone): Update.
* cgraph.h (struct cgraph_edge): Remove
call_stmt_size/call_stmt_time/loop_nest.
(cgraph_create_edge, cgraph_create_indirect_edge,
cgraph_create_edge_including_clones, cgraph_clone_node): Update
prototype.
* tree-emutls.c (gen_emutls_addr): Update.
* ipa-inline-transform.c (update_noncloned_frequencies): Do not handle
loop_nest; handle indirect calls, too.
(clone_inlined_nodes): Do not care about updating inline summaries.
* cgraphunit.c (cgraph_copy_node_for_versioning): Update.
* lto-cgraph.c (lto_output_edge, input_node, input_edge): Do not
stream call_stmt_size/call_stmt_time/loop_nest.
* ipa-inline.c (edge_badness): Update.
(ipa_inline): dump summaries after inlining.
* ipa-inline.h (struct inline_edge_summary, inline_edge_summary_t):
new.
(inline_edge_summary): New function.
* ipa-inline-analysis.c (edge_duplication_hook_holder): New holder.
(inline_edge_removal_hook): Handle edge summaries.
(inline_edge_duplication_hook): New hook.
(inline_summary_alloc): Alloc hooks.
(initialize_growth_caches): Do not register removal hooks.
(free_growth_caches); Do not free removal hook.
(dump_inline_edge_summary): New function.
(dump_inline_summary): Use it.
(estimate_function_body_sizes, estimate_edge_size_and_time): Update.
(inline_update_callee_summaries): New function.
(inline_merge_summary): Use it.
(do_estimate_edge_time, do_estimate_edge_growth): Update.
(read_inline_edge_summary): New function.
(inline_read_section): Use it.
(write_inline_edge_summary): New function.
(inline_write_summary): Use it.
(inline_free_summary): Free edge new holders.
* tree-inline.c (copy_bb): Update.
From-SVN: r172989
Diffstat (limited to 'gcc/ipa-inline.h')
-rw-r--r-- | gcc/ipa-inline.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ipa-inline.h b/gcc/ipa-inline.h index 4fe4489e8cf..d27fa46b7b8 100644 --- a/gcc/ipa-inline.h +++ b/gcc/ipa-inline.h @@ -101,6 +101,8 @@ struct GTY(()) inline_summary int time; int size; + /* Conditional size/time information. The summaries are being + merged during inlining. */ conditions conds; VEC(size_time_entry,gc) *entry; }; @@ -110,6 +112,21 @@ DEF_VEC_O(inline_summary_t); DEF_VEC_ALLOC_O(inline_summary_t,gc); extern GTY(()) VEC(inline_summary_t,gc) *inline_summary_vec; +/* Information kept about callgraph edges. */ +struct inline_edge_summary +{ + /* Estimated size and time of the call statement. */ + int call_stmt_size; + int call_stmt_time; + /* Depth of loop nest, 0 means no nesting. */ + unsigned short int loop_depth; +}; + +typedef struct inline_edge_summary inline_edge_summary_t; +DEF_VEC_O(inline_edge_summary_t); +DEF_VEC_ALLOC_O(inline_edge_summary_t,heap); +extern VEC(inline_edge_summary_t,heap) *inline_edge_summary_vec; + typedef struct edge_growth_cache_entry { int time, size; @@ -152,6 +169,12 @@ inline_summary (struct cgraph_node *node) return VEC_index (inline_summary_t, inline_summary_vec, node->uid); } +static inline struct inline_edge_summary * +inline_edge_summary (struct cgraph_edge *edge) +{ + return VEC_index (inline_edge_summary_t, + inline_edge_summary_vec, edge->uid); +} /* Return estimated unit growth after inlning all calls to NODE. Quick accesors to the inline growth caches. |