This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix bootstrap with solaris as


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
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));


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]