diff options
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index a0db586..fdc156d 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -857,6 +857,7 @@ cgraph_remove_node (struct cgraph_node *node) { void **slot; bool kill_body = false; + struct cgraph_node *n; cgraph_call_node_removal_hooks (node); cgraph_node_remove_callers (node); @@ -865,8 +866,9 @@ cgraph_remove_node (struct cgraph_node *node) /* Incremental inlining access removed nodes stored in the postorder list. */ node->needed = node->reachable = false; - while (node->nested) - cgraph_remove_node (node->nested); + for (n = node->nested; n; n = n->next_nested) + n->origin = NULL; + node->nested = NULL; if (node->origin) { struct cgraph_node **node2 = &node->origin->nested; |