mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-28 22:34:03 +08:00
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:
parent
ba663ac1b1
commit
bc2fcccd9d
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user