From: Roger Sayle Date: Mon, 12 Jan 2004 17:22:12 +0000 (+0000) Subject: re PR middle-end/11397 (weak aliases broken on Tru64 UNIX) X-Git-Tag: releases/gcc-3.4.0~1077 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=06e4eab5549af09b0f39712db7def539de7f88e2;p=thirdparty%2Fgcc.git re PR middle-end/11397 (weak aliases broken on Tru64 UNIX) PR middle-end/11397 * varasm.c (assemble_alias): Remove weak aliases from weak_decls. * gcc.dg/special/wkali-2.c: Add dg-require-alias. From-SVN: r75737 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index da3258f66b1a..d01473f88f67 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-01-12 Roger Sayle + + PR middle-end/11397 + * varasm.c (assemble_alias): Remove weak aliases from weak_decls. + 2004-01-12 Jan Hubicka PR opt/12826 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1c5950be7fd4..efe747befe72 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-01-12 Roger Sayle + + PR middle-end/11397 + * gcc.dg/special/wkali-2.c: Add dg-require-alias. + 2004-01-12 Jan Hubicka PR opt/12826 diff --git a/gcc/testsuite/gcc.dg/special/wkali-2.c b/gcc/testsuite/gcc.dg/special/wkali-2.c index b53d4f270243..c36024632c6b 100644 --- a/gcc/testsuite/gcc.dg/special/wkali-2.c +++ b/gcc/testsuite/gcc.dg/special/wkali-2.c @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-require-weak "" } */ +/* { dg-require-alias "" } */ /* { dg-additional-sources "wkali-2a.c wkali-2b.c" } */ #include diff --git a/gcc/varasm.c b/gcc/varasm.c index 3f5905ab397a..17d2d341a124 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1,6 +1,6 @@ /* Output variables, constants and external declarations, for GNU compiler. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GCC. @@ -4411,14 +4411,26 @@ assemble_alias (tree decl, tree target ATTRIBUTE_UNUSED) #endif #else /* !ASM_OUTPUT_DEF */ #if defined (ASM_OUTPUT_WEAK_ALIAS) || defined (ASM_WEAKEN_DECL) - if (! DECL_WEAK (decl)) - warning ("only weak aliases are supported in this configuration"); - + if (DECL_WEAK (decl)) + { + tree *p, t; #ifdef ASM_WEAKEN_DECL - ASM_WEAKEN_DECL (asm_out_file, decl, name, IDENTIFIER_POINTER (target)); + ASM_WEAKEN_DECL (asm_out_file, decl, name, IDENTIFIER_POINTER (target)); #else - ASM_OUTPUT_WEAK_ALIAS (asm_out_file, name, IDENTIFIER_POINTER (target)); + ASM_OUTPUT_WEAK_ALIAS (asm_out_file, name, IDENTIFIER_POINTER (target)); #endif + /* Remove this function from the pending weak list so that + we do not emit multiple .weak directives for it. */ + for (p = &weak_decls; (t = *p) ; ) + if (DECL_ASSEMBLER_NAME (decl) + == DECL_ASSEMBLER_NAME (TREE_VALUE (t))) + *p = TREE_CHAIN (t); + else + p = &TREE_CHAIN (t); + } + else + warning ("only weak aliases are supported in this configuration"); + #else warning ("alias definitions not supported in this configuration; ignored"); #endif