diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-20 13:55:06 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-20 13:55:06 +0000 |
commit | 289c4db44c825097aa608138252f2e058ad98b6b (patch) | |
tree | d02afd479c74875a28f01dba8b1c20718de3c062 /gcc/ipa.c | |
parent | e472ce46eb03159d7e97532ee63c890988164946 (diff) | |
download | gcc-289c4db44c825097aa608138252f2e058ad98b6b.tar.gz |
* cgraphunit.c (ipa_passes, compile): Reshedule
symtab_remove_unreachable_nodes passes; update comments.
* ipa-inline.c (pass_data_ipa_inline): Do not schedule
TODO_remove_functions before the pass; the functions ought to be
already removed.
* ipa.c (pass_data_ipa_free_inline_summary): Enable dump; schedule
TODO_remove_functions.
* passes.c (pass_data_early_local_passes): Do not schedule function
removal.
(execute_one_pass): Fix call of symtab_remove_unreachable_nodes.
* lto.c (read_cgraph_and_symbols): Fix symtab_remove_unreachable_nodes
call.
(do_whole_program_analysis): Only sanity check that IPA passes cleans up.
* testsuite/g++.dg/ipa/devirt-17.C: Update template.
* testsuite/g++.dg/ipa/devirt-16.C: Update template.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214224 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa.c')
-rw-r--r-- | gcc/ipa.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/ipa.c b/gcc/ipa.c index 1081e89d945..bf6b2d72e27 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -727,14 +727,17 @@ namespace { const pass_data pass_data_ipa_free_inline_summary = { SIMPLE_IPA_PASS, /* type */ - "*free_inline_summary", /* name */ + "free-inline-summary", /* name */ OPTGROUP_NONE, /* optinfo_flags */ TV_IPA_FREE_INLINE_SUMMARY, /* tv_id */ 0, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + /* Early optimizations may make function unreachable. We can not + remove unreachable functions as part of the ealry opts pass because + TODOs are run before subpasses. Do it here. */ + ( TODO_remove_functions | TODO_dump_symtab ), /* todo_flags_finish */ }; class pass_ipa_free_inline_summary : public simple_ipa_opt_pass |