From 21fe7edcee8a8e39cb4ba5f8b49e759c48f76bce Mon Sep 17 00:00:00 2001 From: Rafael Avila de Espindola Date: Tue, 19 Aug 2008 14:11:18 +0000 Subject: [PATCH] varasm.c (weak_decls): Move earlier in the file. 2008-08-19 Rafael Espindola * 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. From-SVN: r139233 --- gcc/ChangeLog | 6 ++++++ gcc/varasm.c | 18 ++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8d30516..a325889 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-08-19 Rafael Espindola + + * 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. + 2008-08-19 H.J. Lu PR target/37157 diff --git a/gcc/varasm.c b/gcc/varasm.c index 941716f..863ffd0 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); -- 2.7.4