diff mbox

Fix bootstrap with solaris as

Message ID 20111112132335.GA16915@kam.mff.cuni.cz
State New
Headers show

Commit Message

Jan Hubicka Nov. 12, 2011, 1:23 p.m. UTC
Hi,
my reorg of wekarefs broke solaris bootstrap. The problem is that C++ FE produces
aliases for external variables/functions and expect them to be always thrown away.
I think this was originally an oversight, since they are completely useless for
rest of compilation but with new alias representation we ought to be able to use
them to prove that the two vars are known to be equivalent. This patch however just
prevents cgraphunit from outputting them and thus fixes the bootstrap issue.

Bootstrapped/regtested & comitted.
Honza
diff mbox

Patch

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 181310)
+++ ChangeLog	(working copy)
@@ -1,3 +1,8 @@ 
+2011-11-12  Jan Hubicka  <jh@suse.cz>
+
+	PR bootstrap/50822
+	* cgraphunit.c (output_weakrefs): Output really only weakrefs.
+
 2011-11-12  Nathan Sidwell  <nathan@acm.org>
 
 	* gcov.c (struct name_map): New.
Index: cgraphunit.c
===================================================================
--- cgraphunit.c	(revision 181310)
+++ cgraphunit.c	(working copy)
@@ -2101,13 +2101,15 @@  output_weakrefs (void)
   struct varpool_node *vnode;
   for (node = cgraph_nodes; node; node = node->next)
     if (node->alias && DECL_EXTERNAL (node->decl)
-        && !TREE_ASM_WRITTEN (node->decl))
+        && !TREE_ASM_WRITTEN (node->decl)
+	&& lookup_attribute ("weakref", DECL_ATTRIBUTES (node->decl)))
       assemble_alias (node->decl,
 		      node->thunk.alias ? DECL_ASSEMBLER_NAME (node->thunk.alias)
 		      : get_alias_symbol (node->decl));
   for (vnode = varpool_nodes; vnode; vnode = vnode->next)
     if (vnode->alias && DECL_EXTERNAL (vnode->decl)
-        && !TREE_ASM_WRITTEN (vnode->decl))
+        && !TREE_ASM_WRITTEN (vnode->decl)
+	&& lookup_attribute ("weakref", DECL_ATTRIBUTES (vnode->decl)))
       assemble_alias (vnode->decl,
 		      vnode->alias_of ? DECL_ASSEMBLER_NAME (vnode->alias_of)
 		      : get_alias_symbol (vnode->decl));