lto-symtab.c (lto_symtab_resolve_can_prevail_p): Chose var with varpool.

* lto-symtab.c (lto_symtab_resolve_can_prevail_p): Chose var with varpool.
	(lto_symtab_merge_decls_1): Remove logic looking for an initializer.

From-SVN: r158944
This commit is contained in:
Jan Hubicka 2010-04-30 20:45:47 +02:00 committed by Jan Hubicka
parent ace72c88c5
commit cd71491e1c
2 changed files with 6 additions and 16 deletions

View File

@ -1,3 +1,8 @@
2010-04-30 Jan Hubicka <jh@suse.cz>
* lto-symtab.c (lto_symtab_resolve_can_prevail_p): Chose var with varpool.
(lto_symtab_merge_decls_1): Remove logic looking for an initializer.
2010-04-30 Jan Hubicka <jh@suse.cz>
* cgraph.h (cgraph_node_set_nonempty_p, varpool_node_set_nonempty_p): New.

View File

@ -406,11 +406,7 @@ lto_symtab_resolve_can_prevail_p (lto_symtab_entry_t e)
/* A variable should have a size. */
else if (TREE_CODE (e->decl) == VAR_DECL)
return (DECL_SIZE (e->decl) != NULL_TREE
/* The C++ frontend retains TREE_STATIC on the declaration
of foo_ in struct Foo { static Foo *foo_; }; but it is
not a definition. g++.dg/lto/20090315_0.C. */
&& !DECL_EXTERNAL (e->decl));
return (e->vnode && e->vnode->finalized);
gcc_unreachable ();
}
@ -588,17 +584,6 @@ lto_symtab_merge_decls_1 (void **slot, void *data ATTRIBUTE_UNUSED)
while (!prevailing->vnode
&& prevailing->next)
prevailing = prevailing->next;
/* We do not stream varpool nodes, so the first decl has to
be good enough for now.
??? For QOI choose a variable with readonly initializer
if there is one. This matches C++
struct Foo { static const int i = 1; }; without a real
definition. */
if (TREE_CODE (prevailing->decl) == VAR_DECL)
while (!(TREE_READONLY (prevailing->decl)
&& DECL_INITIAL (prevailing->decl))
&& prevailing->next)
prevailing = prevailing->next;
}
/* Move it first in the list. */