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:
parent
ace72c88c5
commit
cd71491e1c
@ -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.
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user