This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Remove unreachable nodes before IPA profile pass (PR ipa/87706).
- From: Martin Liška <mliska at suse dot cz>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 8 Nov 2018 12:39:25 +0100
- Subject: Re: [PATCH] Remove unreachable nodes before IPA profile pass (PR ipa/87706).
- References: <8c883adb-9ec5-c9d5-f1cb-cc48a6ccd2ea@suse.cz> <20181108111948.uahgghjf3nteeiqw@kam.mff.cuni.cz>
On 11/8/18 12:19 PM, Jan Hubicka wrote:
>> Hi.
>>
>> In order to fix the warnings mentioned in the PR, we need
>> to run remove_unreachable_nodes after early tree passes. That's
>> however possible only within a IPA pass. Thus I'm calling that
>> before the profile PASS.
>>
>> Patch survives regression tests on ppc64le-linux-gnu and majority
>> of warnings are gone in profiledbootstrap.
>>
>> Ready for trunk?
>
> I think we want to do that even with no -fprofile-generate because the
> unreachable code otherwise goes into all other IPA passes for no good
> reason. So perhaps adding it as todo after the early optimization
> metapass?
That fails due to gcc_assert.
So one needs:
diff --git a/gcc/passes.c b/gcc/passes.c
index d838d909941..be92a2f3be3 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -485,7 +485,7 @@ const pass_data pass_data_all_early_optimizations =
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_remove_functions | TODO_rebuild_cgraph_edges, /* todo_flags_finish */
};
class pass_all_early_optimizations : public gimple_opt_pass
@@ -1989,7 +1989,8 @@ execute_todo (unsigned int flags)
of IPA pass queue. */
if (flags & TODO_remove_functions)
{
- gcc_assert (!cfun);
+ gcc_assert (!cfun
+ || strcmp (current_pass->name, "early_optimizations") == 0);
symtab->remove_unreachable_nodes (dump_file);
}
Or do you prefer to a new pass_remove_functions pass that will be added after
pass_local_optimization_passes ?
Martin
>
> Honza
>> Thanks,
>> Martin
>>
>> gcc/ChangeLog:
>>
>> 2018-11-08 Martin Liska <mliska@suse.cz>
>>
>> * tree-profile.c: Run TODO_remove_functions before "profile"
>> pass in order to remove dead functions that will trigger
>> -Wmissing-profile.
>> ---
>> gcc/tree-profile.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>>
>
>> diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c
>> index d8f2a3b1ba4..c14ebc556a6 100644
>> --- a/gcc/tree-profile.c
>> +++ b/gcc/tree-profile.c
>> @@ -776,7 +776,7 @@ const pass_data pass_data_ipa_tree_profile =
>> 0, /* properties_required */
>> 0, /* properties_provided */
>> 0, /* properties_destroyed */
>> - 0, /* todo_flags_start */
>> + TODO_remove_functions, /* todo_flags_start */
>> TODO_dump_symtab, /* todo_flags_finish */
>> };
>>
>>
>