diff options
author | Franz Sirl <Franz.Sirl-kernel@lauterbach.com> | 2002-04-28 18:31:34 +0000 |
---|---|---|
committer | Franz Sirl <sirl@gcc.gnu.org> | 2002-04-28 18:31:34 +0000 |
commit | 45806a3fd4f324c7050b26980f282e1a4ef8961e (patch) | |
tree | bf07a3136b537dc0844e7c227d87d6ade6e858ef /gcc/c-decl.c | |
parent | 32c8d10081ea8d106b1bf83f0ce13480c9e36910 (diff) | |
download | gcc-45806a3fd4f324c7050b26980f282e1a4ef8961e.zip gcc-45806a3fd4f324c7050b26980f282e1a4ef8961e.tar.gz gcc-45806a3fd4f324c7050b26980f282e1a4ef8961e.tar.bz2 |
re PR c/6343 (attribute((weak)) not working on second declaration)
2002-04-28 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
PR c/6343
* c-decl.c (duplicate_decls): Call merge_weak.
* c-pragma.c (apply_pragma_weak): Warn about misuse.
* output.h (merge_weak): Prototype merge_weak.
* varasm.c (merge_weak): New function.
(declare_weak): Make sure we don't give an error on VAR_DECLs.
Mark RTL with SYMBOL_REF_WEAK.
cp:
* decl.c (duplicate_decls): Call merge_weak.
testsuite:
* gcc.dg/weak-[2-7].c: New tests.
From-SVN: r52844
Diffstat (limited to 'gcc/c-decl.c')
-rw-r--r-- | gcc/c-decl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 9cef187..0898613 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1843,7 +1843,8 @@ duplicate_decls (newdecl, olddecl, different_binding_level) } /* Merge the storage class information. */ - DECL_WEAK (newdecl) |= DECL_WEAK (olddecl); + merge_weak (newdecl, olddecl); + /* For functions, static overrides non-static. */ if (TREE_CODE (newdecl) == FUNCTION_DECL) { |