/* Return varpool node assigned to DECL. Create new one when needed. */
struct varpool_node *
-varpool_node (tree decl)
+varpool_node_for_decl (tree decl)
{
struct varpool_node *node = varpool_get_node (decl);
gcc_assert (TREE_CODE (decl) == VAR_DECL
struct varpool_node *
varpool_node_for_asm (tree asmname)
{
- symtab_node node = symtab_node_for_asm (asmname);
- if (node && symtab_variable_p (node))
- return varpool (node);
+ if (symtab_node node = symtab_node_for_asm (asmname))
+ if (varpool_node *vnode = dyn_cast <varpool_node> (node))
+ return vnode;
return NULL;
}
{
struct varpool_node *node;
varpool_finalize_decl (decl);
- node = varpool_node (decl);
+ node = varpool_node_for_decl (decl);
if (varpool_externally_visible_p (node, false))
node->symbol.externally_visible = true;
}
}
if (node->alias && node->alias_of)
{
- struct varpool_node *tgt = varpool_node (node->alias_of);
+ struct varpool_node *tgt = varpool_node_for_decl (node->alias_of);
struct varpool_node *n;
for (n = tgt; n && n->alias;
for (next = node->symbol.same_comdat_group;
next != (symtab_node)node;
next = next->symbol.same_comdat_group)
- if (symtab_variable_p (next)
- && varpool (next)->analyzed)
- enqueue_node (varpool (next), &first);
+ {
+ varpool_node *vnext = dyn_cast <varpool_node> (next);
+ if (vnext && vnext->analyzed)
+ enqueue_node (vnext, &first);
+ }
}
for (i = 0; ipa_ref_list_reference_iterate (&node->symbol.ref_list, i, ref); i++)
- if (symtab_variable_p (ref->referred)
- && (!DECL_EXTERNAL (ref->referred->symbol.decl)
- || varpool (ref->referred)->alias)
- && varpool (ref->referred)->analyzed)
- enqueue_node (varpool (ref->referred), &first);
+ {
+ varpool_node *vnode = dyn_cast <varpool_node> (ref->referred);
+ if (vnode
+ && (!DECL_EXTERNAL (ref->referred->symbol.decl)
+ || vnode->alias)
+ && vnode->analyzed)
+ enqueue_node (vnode, &first);
+ }
}
if (cgraph_dump_file)
fprintf (cgraph_dump_file, "\nRemoving variables:");
DECL_CONTEXT (new_decl) = NULL_TREE;
DECL_ABSTRACT (new_decl) = 0;
lang_hooks.dup_lang_specific_decl (new_decl);
- new_node = varpool_node (new_decl);
+ new_node = varpool_node_for_decl (new_decl);
varpool_finalize_decl (new_decl);
return new_node->symbol.decl;
gcc_assert (TREE_CODE (decl) == VAR_DECL);
gcc_assert (TREE_CODE (alias) == VAR_DECL);
- alias_node = varpool_node (alias);
+ alias_node = varpool_node_for_decl (alias);
alias_node->alias = 1;
alias_node->finalized = 1;
alias_node->alias_of = decl;