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]

PR tree-optimization/47276 (glibc build failure due to chained aliases)


Hi,
this patch fixes problem with chained aliases (we was overactive on marking
targets of aliases that are themselves aliases as needed functions).

Bootstrapped/regtested x86_64-linux, will commit it shortly.
Honza

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 168753)
+++ ChangeLog	(working copy)
@@ -1,3 +1,9 @@
+2011-01-13  Jan Hubicka  <jh@suse.cz>
+
+	PR tree-optimization/47276 
+	* ipa.c (function_and_variable_visibility): Do not try to mark alias
+	declarations as needed.
+
 2011-01-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
 	PR target/47251
Index: testsuite/ChangeLog
===================================================================
--- testsuite/ChangeLog	(revision 168753)
+++ testsuite/ChangeLog	(working copy)
@@ -1,3 +1,8 @@
+2011-01-13  Jan Hubicka  <jh@suse.cz>
+
+	PR tree-optimization/47276 
+	* gcc.dg/pr47276.c: New testcase.
+
 2011-01-13  Tobias Burnus  <burnus@net-b.de>
 	    Mikael Morin  <mikael@gcc.gnu.org>
 
Index: testsuite/gcc.dg/pr47276.c
===================================================================
--- testsuite/gcc.dg/pr47276.c	(revision 0)
+++ testsuite/gcc.dg/pr47276.c	(revision 0)
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-alias "" } */
+extern void syslog (int __pri, __const char *__fmt, ...)
+     __attribute__ ((__format__ (__printf__, 2, 3)));
+extern void vsyslog (int __pri, __const char *__fmt, int __ap)
+     __attribute__ ((__format__ (__printf__, 2, 0)));
+void
+__vsyslog(int pri, const char *fmt, int ap)
+{
+}
+void
+__syslog_chk(int pri, int flag, const char *fmt, ...)
+{
+}
+void
+__vsyslog_chk(int pri, int flag, const char *fmt, int ap)
+{
+}
+extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __asm__("" "__vsyslog_chk"); extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __attribute__((alias ("" "__GI___vsyslog_chk")));
+void
+__syslog(int pri, const char *fmt, ...)
+{
+}
+extern __typeof (__syslog) syslog __attribute__ ((alias ("__syslog")));
+extern __typeof (syslog) __EI_syslog __asm__("" "syslog"); extern __typeof (syslog) __EI_syslog __attribute__((alias ("" "__GI_syslog")));
+extern __typeof (__vsyslog) vsyslog __attribute__ ((alias ("__vsyslog")));
+extern __typeof (vsyslog) __EI_vsyslog __asm__("" "vsyslog"); extern __typeof (vsyslog) __EI_vsyslog __attribute__((alias ("" "__GI_vsyslog")));
+extern __typeof (syslog) syslog __asm__ ("" "__GI_syslog") __attribute__ ((visibility ("hidden")));
+extern __typeof (vsyslog) vsyslog __asm__ ("" "__GI_vsyslog") __attribute__ ((visibility ("hidden")));
+extern __typeof (__vsyslog_chk) __vsyslog_chk __asm__ ("" "__GI___vsyslog_chk") __attribute__ ((visibility ("hidden")));
Index: ipa.c
===================================================================
--- ipa.c	(revision 168753)
+++ ipa.c	(working copy)
@@ -847,6 +847,8 @@ function_and_variable_visibility (bool w
       if ((node = cgraph_node_for_asm (p->target)) != NULL
 	  && !DECL_EXTERNAL (node->decl))
         {
+	  if (!node->analyzed)
+	    continue;
 	  /* Weakrefs alias symbols from other compilation unit.  In the case
 	     the destination of weakref became available because of LTO, we must
 	     mark it as needed.  */


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