aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2021-03-31 11:35:29 +0200
committerJan Hubicka <jh@suse.cz>2021-03-31 11:35:29 +0200
commitd7145b4bb6c8729a1e782373cb6256c06ed60465 (patch)
treeac5434e0f577133bb748f64406e070cb172afdbe /gcc
parentc3c616747a615589d38aff92981eacbf932eb5c6 (diff)
downloadgcc-d7145b4bb6c8729a1e782373cb6256c06ed60465.zip
gcc-d7145b4bb6c8729a1e782373cb6256c06ed60465.tar.gz
gcc-d7145b4bb6c8729a1e782373cb6256c06ed60465.tar.bz2
Small refactoring of cgraph_node::release_body
PR lto/99447 * cgraph.c (cgraph_node::release_body): Remove all callers and references. * cgraphclones.c (cgraph_node::materialize_clone): Do not do it here. * cgraphunit.c (cgraph_node::expand): And here.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cgraph.c3
-rw-r--r--gcc/cgraphclones.c6
-rw-r--r--gcc/cgraphunit.c4
3 files changed, 4 insertions, 9 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 8014075..b77c676 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -1860,6 +1860,9 @@ cgraph_node::release_body (bool keep_arguments)
lto_free_function_in_decl_state_for_node (this);
lto_file_data = NULL;
}
+ gcc_assert (!clones);
+ remove_callees ();
+ remove_all_references ();
}
/* Remove function from symbol table. */
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 95103a4..9f86463 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -1143,11 +1143,7 @@ cgraph_node::materialize_clone ()
/* Function is no longer clone. */
remove_from_clone_tree ();
if (!this_clone_of->analyzed && !this_clone_of->clones)
- {
- this_clone_of->release_body ();
- this_clone_of->remove_callees ();
- this_clone_of->remove_all_references ();
- }
+ this_clone_of->release_body ();
}
#include "gt-cgraphclones.h"
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 1c74cee..0b70e4d 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1892,10 +1892,6 @@ cgraph_node::expand (void)
comdat groups. */
assemble_thunks_and_aliases ();
release_body ();
- /* Eliminate all call edges. This is important so the GIMPLE_CALL no longer
- points to the dead function body. */
- remove_callees ();
- remove_all_references ();
}
/* Node comparator that is responsible for the order that corresponds