diff options
author | Jan Hubicka <jh@suse.cz> | 2007-01-08 12:13:14 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2007-01-08 11:13:14 +0000 |
commit | f4b3ca7277845d4444997924301da6225ce19001 (patch) | |
tree | 5658297c549eec3a1a45febe1d3d11e413cc482c /gcc/ipa-inline.c | |
parent | 2fe29729951cda1678804a3e681b145430cd068c (diff) | |
download | gcc-f4b3ca7277845d4444997924301da6225ce19001.zip gcc-f4b3ca7277845d4444997924301da6225ce19001.tar.gz gcc-f4b3ca7277845d4444997924301da6225ce19001.tar.bz2 |
tree-pas.h (TODO_remove_function): New flag.
* tree-pas.h (TODO_remove_function): New flag.
(TODO_update*): Renumber.
(pass_ipa_increase_alignment,
pass_ipa_function_and_variable_visibility): New passes.
* cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
(cgraph_function_and_variable_visibility): Move to ipa.c
(cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
cgraph_increase_alignment.
* ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
(cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
calling tree-inline.
(cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
(pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
* tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
(gate_increase_alignment): New function.
(pass_ipa_increase_alignment): New pass.
* ipa.c: Inline tree-pass.h and timevar.h
(function_and_variable_visibility): Move here from cgraphunit.c
* tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
* passes.c (init_optimization_passes): Add the two new passes.
(execute_todo): Handle cgraph_remove_functions.
From-SVN: r120576
Diffstat (limited to 'gcc/ipa-inline.c')
-rw-r--r-- | gcc/ipa-inline.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index ec24384..bf9790f 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -925,7 +925,6 @@ cgraph_decide_inlining (void) int old_insns = 0; int i; - timevar_push (TV_INLINE_HEURISTICS); max_count = 0; for (node = cgraph_nodes; node; node = node->next) if (node->analyzed && (node->needed || node->reachable)) @@ -1083,7 +1082,6 @@ cgraph_decide_inlining (void) ncalls_inlined, nfunctions_inlined, initial_insns, overall_insns); free (order); - timevar_pop (TV_INLINE_HEURISTICS); return 0; } @@ -1146,6 +1144,7 @@ cgraph_decide_inlining_incrementally (struct cgraph_node *node, bool early) } if (early && inlined) { + timevar_push (TV_INTEGRATION); push_cfun (DECL_STRUCT_FUNCTION (node->decl)); tree_register_cfg_hooks (); current_function_decl = node->decl; @@ -1153,6 +1152,7 @@ cgraph_decide_inlining_incrementally (struct cgraph_node *node, bool early) node->local.self_insns = node->global.insns; current_function_decl = NULL; pop_cfun (); + timevar_pop (TV_INTEGRATION); } return inlined; } @@ -1172,12 +1172,13 @@ struct tree_opt_pass pass_ipa_inline = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - TV_INTEGRATION, /* tv_id */ + TV_INLINE_HEURISTICS, /* tv_id */ 0, /* properties_required */ PROP_cfg, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_dump_cgraph | TODO_dump_func, /* todo_flags_finish */ + TODO_dump_cgraph | TODO_dump_func + | TODO_remove_functions, /* todo_flags_finish */ 0 /* letter */ }; @@ -1223,7 +1224,6 @@ cgraph_early_inlining (void) ggc_collect (); } } - cgraph_remove_unreachable_nodes (true, dump_file); #ifdef ENABLE_CHECKING for (node = cgraph_nodes; node; node = node->next) gcc_assert (!node->global.inlined_to); @@ -1249,12 +1249,13 @@ struct tree_opt_pass pass_early_ipa_inline = NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - TV_INTEGRATION, /* tv_id */ + TV_INLINE_HEURISTICS, /* tv_id */ 0, /* properties_required */ PROP_cfg, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_dump_cgraph | TODO_dump_func, /* todo_flags_finish */ + TODO_dump_cgraph | TODO_dump_func + | TODO_remove_functions, /* todo_flags_finish */ 0 /* letter */ }; |