Fix ICE in ipa_edge_args_sum_t::duplicate

PR ipa/97244
	* ipa-fnsummary.c (pass_free_fnsummary::execute): Free
	also indirect inlining datastructure.
	* ipa-modref.c (pass_ipa_modref::execute): Do not free them here.
	* ipa-prop.c (ipa_free_all_node_params): Do not crash when info does
	not exist.
	(ipa_unregister_cgraph_hooks): Likewise.
This commit is contained in:
Jan Hubicka 2020-10-01 15:03:19 +02:00
parent ba663ac1b1
commit bc2fcccd9d
3 changed files with 6 additions and 4 deletions

View File

@ -4680,6 +4680,8 @@ public:
virtual unsigned int execute (function *)
{
ipa_free_fn_summary ();
/* Free ipa-prop structures if they are no longer needed. */
ipa_free_all_structures_after_iinln ();
if (!flag_wpa)
ipa_free_size_summary ();
return 0;

View File

@ -1681,8 +1681,6 @@ pass_ipa_modref::execute (function *)
}
((modref_summaries *)summaries)->ipa = false;
ipa_free_postorder_info ();
/* Free ipa-prop structures if they are no longer needed. */
ipa_free_all_structures_after_iinln ();
return 0;
}

View File

@ -4124,7 +4124,8 @@ ipa_free_all_edge_args (void)
void
ipa_free_all_node_params (void)
{
ggc_delete (ipa_node_params_sum);
if (ipa_node_params_sum)
ggc_delete (ipa_node_params_sum);
ipa_node_params_sum = NULL;
}
@ -4368,7 +4369,8 @@ ipa_register_cgraph_hooks (void)
static void
ipa_unregister_cgraph_hooks (void)
{
symtab->remove_cgraph_insertion_hook (function_insertion_hook_holder);
if (function_insertion_hook_holder)
symtab->remove_cgraph_insertion_hook (function_insertion_hook_holder);
function_insertion_hook_holder = NULL;
}