diff options
author | Jan Hubicka <jh@suse.cz> | 2020-10-01 15:03:19 +0200 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2020-10-01 15:03:19 +0200 |
commit | bc2fcccd9d5cc9d346543a98c98dc00d71e9a5b8 (patch) | |
tree | be417efb9b3e9e5376741a893fbefa4c44ba938a /gcc | |
parent | ba663ac1b1add0f1625862166a946fcb583d3686 (diff) | |
download | gcc-bc2fcccd9d5cc9d346543a98c98dc00d71e9a5b8.zip gcc-bc2fcccd9d5cc9d346543a98c98dc00d71e9a5b8.tar.gz gcc-bc2fcccd9d5cc9d346543a98c98dc00d71e9a5b8.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ipa-fnsummary.c | 2 | ||||
-rw-r--r-- | gcc/ipa-modref.c | 2 | ||||
-rw-r--r-- | gcc/ipa-prop.c | 6 |
3 files changed, 6 insertions, 4 deletions
diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index 4c1c1f9..8285cc0 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -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; diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c index 6225552..2f4da8f 100644 --- a/gcc/ipa-modref.c +++ b/gcc/ipa-modref.c @@ -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; } diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index b28c78e..ea88fd3 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -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; } |