diff options
author | espindola <espindola@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-19 14:11:18 +0000 |
---|---|---|
committer | espindola <espindola@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-19 14:11:18 +0000 |
commit | d36229a0741fd8e220b83417502d2d78b82f764d (patch) | |
tree | 8597de88ec65628070ba508f4bd324cbe3d772d3 /gcc/varasm.c | |
parent | a6142438c0dfb23e5983e7f796c3172c313dc3b3 (diff) | |
download | gcc-d36229a0741fd8e220b83417502d2d78b82f764d.tar.gz |
2008-08-19 Rafael Espindola <espindola@google.com>
* varasm.c (weak_decls): Move earlier in the file.
(assemble_external): Add weak decls to the weak_decls list.
(declare_weak): Don't add decls to the weak_decls list.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139233 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r-- | gcc/varasm.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c index 941716f73bd..863ffd010f1 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -2286,6 +2286,10 @@ process_pending_assemble_externals (void) #endif } +/* This TREE_LIST contains any weak symbol declarations waiting + to be emitted. */ +static GTY(()) tree weak_decls; + /* Output something to declare an external symbol to the assembler. (Most assemblers don't need this, so we normally output nothing.) Do nothing if DECL is not external. */ @@ -2303,6 +2307,9 @@ assemble_external (tree decl ATTRIBUTE_UNUSED) if (!DECL_P (decl) || !DECL_EXTERNAL (decl) || !TREE_PUBLIC (decl)) return; + if (SUPPORTS_WEAK && DECL_WEAK (decl)) + weak_decls = tree_cons (NULL, decl, weak_decls); + /* We want to output external symbols at very last to check if they are references or not. */ pending_assemble_externals = tree_cons (0, decl, @@ -4846,10 +4853,6 @@ output_constructor (tree exp, unsigned HOST_WIDE_INT size, assemble_zeros (size - total_bytes); } -/* This TREE_LIST contains any weak symbol declarations waiting - to be emitted. */ -static GTY(()) tree weak_decls; - /* Mark DECL as weak. */ static void @@ -4942,12 +4945,7 @@ declare_weak (tree decl) error ("weak declaration of %q+D must be public", decl); else if (TREE_CODE (decl) == FUNCTION_DECL && TREE_ASM_WRITTEN (decl)) error ("weak declaration of %q+D must precede definition", decl); - else if (SUPPORTS_WEAK) - { - if (! DECL_WEAK (decl)) - weak_decls = tree_cons (NULL, decl, weak_decls); - } - else + else if (!SUPPORTS_WEAK) warning (0, "weak declaration of %q+D not supported", decl); mark_weak (decl); |