aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-reference.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2014-12-04 21:11:04 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2014-12-04 21:11:04 +0000
commit953971cf7dd11ab68caec04cae767f5dde656b23 (patch)
tree66c55eb5136f95f1adbef64e69d922fc0b3b6a35 /gcc/ipa-reference.c
parentef9f382ca52a80bb8575d73d7cc8d3ddbf5f7ad7 (diff)
downloadgcc-953971cf7dd11ab68caec04cae767f5dde656b23.zip
gcc-953971cf7dd11ab68caec04cae767f5dde656b23.tar.gz
gcc-953971cf7dd11ab68caec04cae767f5dde656b23.tar.bz2
PR jit/63854: Fix leak of ipa hooks
gcc/ChangeLog: PR jit/63854 * ipa-prop.c (ipa_register_cgraph_hooks): Guard insertion of ipa_add_new_function on function_insertion_hook_holder being non-NULL. * ipa-reference.c (ipa_reference_c_finalize): Remove node_removal_hook_holder and node_duplication_hook_holder if they've been added to symtab. * toplev.c (toplev::finalize): Call ipa_reference_c_finalize before cgraph_c_finalize so that the former can access "symtab". From-SVN: r218403
Diffstat (limited to 'gcc/ipa-reference.c')
-rw-r--r--gcc/ipa-reference.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index 1ce06d1..b046f9e 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -1198,4 +1198,15 @@ ipa_reference_c_finalize (void)
bitmap_obstack_release (&optimization_summary_obstack);
ipa_init_p = false;
}
+
+ if (node_removal_hook_holder)
+ {
+ symtab->remove_cgraph_removal_hook (node_removal_hook_holder);
+ node_removal_hook_holder = NULL;
+ }
+ if (node_duplication_hook_holder)
+ {
+ symtab->remove_cgraph_duplication_hook (node_duplication_hook_holder);
+ node_duplication_hook_holder = NULL;
+ }
}