OSDN Git Service

* lto-symtab.c (lto_symtab_resolve_can_prevail_p): Chose var with varpool.
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Apr 2010 18:45:47 +0000 (18:45 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:37:28 +0000 (14:37 +0900)
(lto_symtab_merge_decls_1): Remove logic looking for an initializer.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158944 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/lto-symtab.c

index 5a7de8f..e370a9f 100644 (file)
@@ -1,5 +1,10 @@
 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.
        * lto-cgraph.c (input_cgraph): Remove call to lto_mark_file_for_ltrans.
        * lto-streamer.h (lto_file_decl_data): Remove needs_ltrans_p.
index a35d82f..b5430a5 100644 (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.  */