/* Remove node from the varpool. */ void varpool_remove_node (struct varpool_node *node) { symtab_unregister_node ((symtab_node)node); if (DECL_INITIAL (node->symbol.decl) && !DECL_IN_CONSTANT_POOL (node->symbol.decl) /* Keep vtables for BINFO folding. */ && !DECL_VIRTUAL_P (node->symbol.decl) /* FIXME: http://gcc.gnu.org/PR55395 */ && debug_info_level == DINFO_LEVEL_NONE) DECL_INITIAL (node->symbol.decl) = error_mark_node; ggc_free (node); }
/* Remove node from the varpool. */ void varpool_remove_node (varpool_node *node) { tree init; varpool_call_node_removal_hooks (node); symtab_unregister_node (node); /* Because we remove references from external functions before final compilation, we may end up removing useful constructors. FIXME: We probably want to trace boundaries better. */ if (cgraph_state == CGRAPH_LTO_STREAMING) ; else if ((init = ctor_for_folding (node->decl)) == error_mark_node) varpool_remove_initializer (node); else DECL_INITIAL (node->decl) = init; ggc_free (node); }
/* Remove node from the varpool. */ void varpool_remove_node (struct varpool_node *node) { gcc_assert (!varpool_assembled_nodes_queue); symtab_unregister_node ((symtab_node)node); if (varpool_first_unanalyzed_node == node) x_varpool_first_unanalyzed_node = (symtab_node)node->next_needed; if (node->next_needed) node->next_needed->prev_needed = node->prev_needed; else if (node->prev_needed) { gcc_assert (varpool_last_needed_node); x_varpool_last_needed_node = (symtab_node)node->prev_needed; } if (node->prev_needed) node->prev_needed->next_needed = node->next_needed; else if (node->next_needed) { gcc_assert (varpool_nodes_queue == node); x_varpool_nodes_queue = (symtab_node)node->next_needed; } ggc_free (node); }