aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraphunit.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2010-05-29 10:17:36 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2010-05-29 08:17:36 +0000
commitf0c418dcec3aef252c625b7c99ca0345ab7843ca (patch)
tree55ba7297742bdce55874fc05c4230052c31fe809 /gcc/cgraphunit.c
parent5c5543af85740540ae47853858756aa64c7871d3 (diff)
downloadgcc-f0c418dcec3aef252c625b7c99ca0345ab7843ca.zip
gcc-f0c418dcec3aef252c625b7c99ca0345ab7843ca.tar.gz
gcc-f0c418dcec3aef252c625b7c99ca0345ab7843ca.tar.bz2
cgraphunit.c (cgraph_materialize_clone): Only remove calles, refs and body...
* cgraphunit.c (cgraph_materialize_clone): Only remove calles, refs and body; not the whole node for masters of materialized clones. From-SVN: r160019
Diffstat (limited to 'gcc/cgraphunit.c')
-rw-r--r--gcc/cgraphunit.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index ab6bf06..39711a3 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2311,7 +2311,11 @@ cgraph_materialize_clone (struct cgraph_node *node)
node->next_sibling_clone = NULL;
node->prev_sibling_clone = NULL;
if (!node->clone_of->analyzed && !node->clone_of->clones)
- cgraph_remove_node (node->clone_of);
+ {
+ cgraph_release_function_body (node->clone_of);
+ cgraph_node_remove_callees (node->clone_of);
+ ipa_remove_all_references (&node->clone_of->ref_list);
+ }
node->clone_of = NULL;
bitmap_obstack_release (NULL);
}