From 8605403e2bcb731d5f1c8579a9c2ea3436e2fb27 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Wed, 20 Aug 2014 15:55:06 +0200 Subject: cgraphunit.c (ipa_passes, compile): Reshedule symtab_remove_unreachable_nodes passes; update comments. * 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. From-SVN: r214224 --- gcc/passes.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gcc/passes.c') diff --git a/gcc/passes.c b/gcc/passes.c index dea9de1..7e47992 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -350,7 +350,9 @@ const pass_data pass_data_early_local_passes = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_remove_functions, /* todo_flags_finish */ + /* todo_flags_finish is executed before subpases. For this reason + it makes no sense to remove unreachable functions here. */ + 0, /* todo_flags_finish */ }; class pass_early_local_passes : public simple_ipa_opt_pass @@ -2119,7 +2121,7 @@ execute_one_pass (opt_pass *pass) } } if (applied) - symtab_remove_unreachable_nodes (true, dump_file); + symtab_remove_unreachable_nodes (false, dump_file); /* Restore current_pass. */ current_pass = pass; } -- cgit v1.1