OSDN Git Service

* varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Apr 2005 10:15:09 +0000 (10:15 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Apr 2005 10:15:09 +0000 (10:15 +0000)
(decl).

testsuite:
* gcc.dg/weak/weak-13.c: New test.

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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/weak/weak-13.c [new file with mode: 0644]
gcc/varasm.c

index d6dd395..c2ac0f4 100644 (file)
@@ -1,3 +1,8 @@
+2005-04-22  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * varasm.c (do_assemble_alias): Return early if TREE_ASM_WRITTEN
+       (decl).
+
 2005-04-22  Nathan Sidwell  <nathan@codesourcery.com>
 
        * config/i386/i386.md (length_immediate): Use gcc_assert or
index 61c9bf8..c55ee24 100644 (file)
@@ -1,3 +1,7 @@
+2005-04-22  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * gcc.dg/weak/weak-13.c: New test.
+
 2005-04-21  Geoffrey Keating  <geoffk@apple.com>
 
        * lib/target-supports.exp (check_effective_target_sync_int_long):
diff --git a/gcc/testsuite/gcc.dg/weak/weak-13.c b/gcc/testsuite/gcc.dg/weak/weak-13.c
new file mode 100644 (file)
index 0000000..15106a5
--- /dev/null
@@ -0,0 +1,13 @@
+/* Test for weak aliases with multiple declarations.  Sun assembler
+   rejects multiple weak alias definitions in the output.  */
+/* { dg-do assemble } */
+/* { dg-require-weak "" } */
+/* { dg-require-alias "" } */
+/* { dg-options "" } */
+
+#pragma weak foo = _foo
+
+extern int foo;
+extern int foo;
+
+int _foo = 4;
index 832b55b..a3aa44a 100644 (file)
@@ -4486,6 +4486,9 @@ find_decl_and_mark_needed (tree decl, tree target)
 static void
 do_assemble_alias (tree decl, tree target ATTRIBUTE_UNUSED)
 {
+  if (TREE_ASM_WRITTEN (decl))
+    return;
+
   TREE_ASM_WRITTEN (decl) = 1;
   TREE_ASM_WRITTEN (DECL_ASSEMBLER_NAME (decl)) = 1;