summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2013-05-16 10:29:42 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2013-05-16 10:29:42 +0000
commite3753785835fdb4c96f901c7d158a38b1c5c2f78 (patch)
tree99797a98eef64aa5f2258997fd4fc31a3d8d6c1f /gcc
parent43bb4dd14d015211a19ccd8c1802cc7e1361d8b7 (diff)
downloadgcc-e3753785835fdb4c96f901c7d158a38b1c5c2f78.tar.gz
varasm.c (default_use_anchors_for_symbol_p): Use decl_replaceable_p.
gcc/ * varasm.c (default_use_anchors_for_symbol_p): Use decl_replaceable_p. gcc/testsuite/ * gcc.dg/visibility-21.c: New. From-SVN: r198965
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/visibility-21.c13
-rw-r--r--gcc/varasm.c6
4 files changed, 24 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3a0929cd122..d6f6e5a23e0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2013-05-16 Nathan Sidwell <nathan@codesourcery.com>
+
+ * varasm.c (default_use_anchors_for_symbol_p): Use decl_replaceable_p.
+
2013-05-16 Marc Glisse <marc.glisse@inria.fr>
PR middle-end/57286
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6ec937c4ad5..7bacbb58eea 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2013-05-16 Nathan Sidwell <nathan@codesourcery.com>
+
+ * gcc.dg/visibility-21.c: New.
+
2013-05-16 Marc Glisse <marc.glisse@inria.fr>
PR middle-end/57286
diff --git a/gcc/testsuite/gcc.dg/visibility-21.c b/gcc/testsuite/gcc.dg/visibility-21.c
new file mode 100644
index 00000000000..264204e848e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/visibility-21.c
@@ -0,0 +1,13 @@
+/* Test visibility attribute on function definition. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fsection-anchors" } */
+/* { dg-require-visibility "" } */
+/* { dg-require-weak "" } */
+/* { dg-final { scan-assembler-not "ANCHOR" } } */
+
+int __attribute__((weak, visibility("hidden"))) weak_hidden[3];
+
+int *f_weak_hidden ()
+{
+ return weak_hidden;
+}
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 6fb49cfa2d2..5f62677b2cc 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -6580,9 +6580,9 @@ default_use_anchors_for_symbol_p (const_rtx symbol)
decl = SYMBOL_REF_DECL (symbol);
if (decl && DECL_P (decl))
{
- /* Don't use section anchors for decls that might be defined by
- other modules. */
- if (!targetm.binds_local_p (decl))
+ /* Don't use section anchors for decls that might be defined or
+ usurped by other modules. */
+ if (TREE_PUBLIC (decl) && !decl_binds_to_current_def_p (decl))
return false;
/* Don't use section anchors for decls that will be placed in a