static bool can_remove_node_now_p (struct cgraph_node *node, struct cgraph_edge *e) { struct cgraph_node *next; if (!can_remove_node_now_p_1 (node)) return false; /* When we see same comdat group, we need to be sure that all items can be removed. */ if (!node->symbol.same_comdat_group) return true; for (next = cgraph (node->symbol.same_comdat_group); next != node; next = cgraph (next->symbol.same_comdat_group)) if ((next->callers && next->callers != e) || !can_remove_node_now_p_1 (next)) return false; return true; }
static bool can_remove_node_now_p_1 (struct cgraph_node *node, struct cgraph_edge *e) { ipa_ref *ref; FOR_EACH_ALIAS (node, ref) { cgraph_node *alias = dyn_cast <cgraph_node *> (ref->referring); if ((alias->callers && alias->callers != e) || !can_remove_node_now_p_1 (alias, e)) return false; }