aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-06-26 20:50:24 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2014-06-26 18:50:24 +0000
commite288a46ccc3f824c1fde7a34d92a265659a05ee5 (patch)
tree6629c6fbf16d67b6b1ae6de297c37f51a25cd8d9 /gcc/varasm.c
parent6a7424669d61d9697fcce29813f70578211af4fd (diff)
downloadgcc-e288a46ccc3f824c1fde7a34d92a265659a05ee5.zip
gcc-e288a46ccc3f824c1fde7a34d92a265659a05ee5.tar.gz
gcc-e288a46ccc3f824c1fde7a34d92a265659a05ee5.tar.bz2
invoke.texi (-fsemantic-interposition): Document.
* doc/invoke.texi (-fsemantic-interposition): Document. * common.opt (fsemantic-interposition): New flag. * varasm.c (decl_replaceable_p): Use it. * gcc.dg/tree-ssa/interposition.c: New testcase. From-SVN: r212049
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 7be56f1..aea5a25 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -6830,6 +6830,9 @@ decl_replaceable_p (tree decl)
gcc_assert (DECL_P (decl));
if (!TREE_PUBLIC (decl) || DECL_COMDAT (decl))
return false;
+ if (!flag_semantic_interposition
+ && !DECL_WEAK (decl))
+ return false;
return !decl_binds_to_current_def_p (decl);
}