This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] PR gcc/84923 - gcc.dg/attr-weakref-1.c failed on aarch64
- From: vladimir dot mezentsev at oracle dot com
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 13 Apr 2018 06:08:53 +0000
- Subject: [PATCH] PR gcc/84923 - gcc.dg/attr-weakref-1.c failed on aarch64
From: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
When weakref_targets is not empty a target cannot be removed from weak_decls.
A small example is below when 'wv12' is removed from the weak list on aarch64:
static vtype Wv12 __attribute__((weakref ("wv12")));
extern vtype wv12 __attribute__((weak));
Bootstrapped on aarch64-unknown-linux-gnu including (c,c++ and go).
Tested on aarch64-linux-gnu.
No regression. The attr-weakref-1.c test passed.
ChangeLog:
2018-04-12 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
PR gcc/84923
* varasm.c (weak_finish): clean up weak_decls
---
gcc/varasm.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/gcc/varasm.c b/gcc/varasm.c
index d24bac4..2a70234 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -5683,8 +5683,7 @@ weak_finish (void)
nor multiple .weak directives for the latter. */
for (p = &weak_decls; (t2 = *p) ; )
{
- if (TREE_VALUE (t2) == alias_decl
- || target == DECL_ASSEMBLER_NAME (TREE_VALUE (t2)))
+ if (TREE_VALUE (t2) == alias_decl)
*p = TREE_CHAIN (t2);
else
p = &TREE_CHAIN (t2);
--
1.8.3.1